我已经在django中设置了我的迁移(非常小的项目);但是我有一个.sql文件,其中有一堆数据,我需要在数据库中。
在运行迁移之后/期间执行此.sql文件的最佳方法是什么(或者是否可能)?
sql文件只包含一个数据插入,如下所示:
INSERT INTO `mileages_mileages` (`id`, `miles`, `start_location`, `end_location`) VALUES
(NULL,3, 'Location 1', 'Location 2'),
我只需要在运行模型的初始迁移之后执行那个.sql文件。
这可能吗?
6条答案
按热度按时间hm2xizp91#
不接受文件作为输入。只接受原始SQL。要解决此问题,您需要使用以下任一方法:
或
ahy6op9u2#
下面是将带有DELIMITER的MySQL语句转换为SQL执行的完整脚本(虽然不完美,但还是原样)。
有关SQL语句https://stackoverflow.com/a/52292690/9521312中乘法分隔符的信息
在迁移文件中添加脚本执行
下面是使用脚本的两个示例:运行sql文件或运行原始MySQL语句
脚本文件
希望能有所帮助!
zd287kbt3#
在阅读了更多内容之后,在迁移中运行SQL来加载数据是错误的,使用fixtures要好得多。
我已经添加了一个fixture,并将使用该文件引入数据。
首先,为了创建fixture,我必须将数据添加到表中(我只是手动运行SQL文件将其添加到适当的表中)。
然后我就跑了
这创建了我的夹具,然后我加载了
它进口时很漂亮。
yftpprvb4#
使用
migrations.RunSQL
时,如果出现以下错误:如果不拆分SQL,则需要sqlparse
您只需安装
sqlparse
即可解决此问题:bfrts1fy5#
您可以执行原始SQL
xxhby3vn6#
paveldroo解决方案的灵感来自于围绕
migrations.RunSQL
创建一个 Package 器来加载sql文件: