我正在Django中重新创建一个在服务器上运行的Web应用程序,但它终止了,幸运的是,我对所有代码进行了备份。我的问题来自数据库,但我不知道如何将旧的<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul class="test111">
<li><span class="testCont">Another</span><a href="#" class="testmenu">Menu 1</a></li>
<li><span class="testCont">Another1</span><a href="#" class="testmenu">Menu 2</a></li>
<li><span class="testCont">Another1</span><a href="#" class="testmenu">Menu 3</a></li>
</ul>
Django数据库Web应用程序中的所有数据传输到新的数据库中。
我发现了与我的Django: transfer data from one database to another类似的问题,但是用户希望从特定列传输数据,因为来自旧数据库和新数据库的db.sqlite3
略有不同。就我而言,来自旧数据库和新数据库的models.py
是相同的。
替代
models.py
来探索旧数据库的内容,我可以手动将每一行添加到Django管理中,但这将花费我太多时间。 DB Browser for SQLite
并将其替换为新的网络应用程序,因为db.sqlite
文件保持不变但这个解决方案不合适IMO,这个解决方案很粗鲁,我认为它违背了软件的良好实践。 如何继续将数据从旧数据库传输到新数据库?
答案 0 :(得分:1)
这似乎是一个db到另一个db的一次性副本。除非你经常要复制这个数据库,否则我不会看到这会违反良好的软件实践。我在迁移服务器之前已经完成了它,并且假设应用程序的两个实例是相同的构建,它不会导致任何问题。
答案 1 :(得分:0)
我能够做一些小技巧来解决我的问题,因为没有一个简单的功能允许你从Django中的两个sqlite数据库传输所有数据。这是我做的伎俩:
下载sqlite db browser
以探索并导出.csv
文件中旧数据库的内容。使用sqlite db browser
打开您的数据库并点击tables
选项,您将看到所有表,然后右键单击其中任何一个并点击export as a csv file
选项以生成csv文件(name_of_your_csv_file.csv
)。另一种方法是使用sqlite3.exe
在cmd
或powershell
中打开您的数据库,然后执行导出:
.tables #this lets you explore your available tables
headers on
mode csv
output name_of_your_csv_file.csv
2.到目前为止有两种选择:您可以insert all the records at once到新数据库,也可以从新数据库中删除现有表,然后重新创建它们并导入.csv
文件。 I went for the drop option因为要迁移的记录超过100条。
# sqlite3
# check the structure of your table so you can re-create it
.schema <table_name>
#the result might be something like CREATE TABLE IF NOT EXISTS "web_app_navigator_table" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "ticket" varchar(120) NOT NULL);
#drop the table
drop table web_app_navigator_table
#re-create the table
create table web_app_navigator_table(id integer not null primary key autoincrement, ticket varchar(120) not null);
#do the import of the csv file
.import C:/Users/a/PycharmProjects/apps/navigator/name_of_your_csv_file.csv table_name_goes_here
您可能会看到csv:1: INSERT failed datatype mismatch
之类的错误,但这表示未插入csv文件的第一行,因为它包含旧数据库中导出数据的标题。