我已经在 Django 中设置了迁移(非常小的项目);但我有一个 .sql 文件,其中包含数据库中我需要的大量数据。
在运行迁移之后/期间执行此 .sql 文件的最佳方式(或者甚至可能)是什么?
sql 文件只包含插入的数据,如下所示:
INSERT INTO `mileages_mileages` (`id`, `miles`, `start_location`, `end_location`) VALUES
(NULL,3, 'Location 1', 'Location 2'),
我只需要在运行模型的初始迁移后执行该 .sql 文件。
这可能吗?
请您参考如下方法:
migrations.RunSQL()
不接受文件作为输入。只有原始 SQL。要解决此问题,您需要使用:
migrations.RunSQL(
"""
INSERT INTO 'mileages_mileages' ('id', 'miles', 'start_location', 'end_location')
VALUES
(NULL,3, 'Location 1', 'Location 2');
""")
或
def load_data_from_sql(apps, schema_editor):
file_path = os.path.join(os.path.dirname(__file__), 'file_name.sql')
sql_statement = open(file_path).read()
with connection.cursor() as c:
c.execute(sql_statement)
class Migration(migrations.Migration):
dependencies = [
('..', '...'),
]
operations = [
migrations.RunPython(load_data_from_sql),
]
