我正在尝试将数据转储到SQL语句。django-admin.py dumpdata仅提供json,xml,yaml。所以:
有人知道这样做的好方法吗?
我尝试过:
def sqldumper(模型):
result = "" units = model.objects.all().values() for unit in units: statement = "INSERT INTO myapp.model "+str(tuple(unit.keys())).replace("'", "")+" VALUES " + str(tuple(unit.values()))+"\r\n" result+=statement return result
因此,我自己查看模型的值,然后自己编写INSERT语句。然后我想到了使用“ django-admin.py sql”来获取“ CREATE”语句..但是后来我不知道如何从我的代码内部使用此行(而不是通过命令行)。我尝试了os.popen和os.system,但是它实际上不起作用..关于此的任何提示?
我将明确指出:如何在代码内部使用“ manage.py sql”?
我在我的视图中添加以下内容:
import os, sys import imp from django.core.management import execute_manager sys_argv_backup = sys.argv imp.find_module("settings") import settings sys.argv = ['','sql','myapp'] execute_manager(settings) sys.argv = sys_argv_backup
事实是- 它可以工作..但是它会将语句写到标准输出中…这是某种东西,但并不完美。我将尝试直接使用django.core.management.sql.sql_create,我们将看看它如何进行。
谢谢
我建议使用特定于SQL的转储程序(例如,用于MySQL的mysqldump)。
对于嵌入在Python中的sqlite,您可以查看以下示例,该示例不涉及Django:
# Convert file existing_db.db to SQL dump file dump.sql import sqlite3, os con = sqlite3.connect('existing_db.db') with open('dump.sql', 'w') as f: for line in con.iterdump(): f.write('%s\n' % line)