django-admin.py dumpdata到SQL语句 [英] django-admin.py dumpdata to SQL statements
问题描述
django-admin.py dumpdata只提供json,xml,yaml。
so:
-
有人知道一个很好的方法吗?
-
我尝试过:
def sqldumper(model):
result =
units = model.objects.all()。values()
单位单位:
statement =INSERT INTO myapp。模型+ str(tuple(unit.keys()))。replace(')+VALUES+ str(tuple(unit.values()))+\r\\\
result + = statement
return result
所以我自己来过模型值,自己做出INSERT语句。
然后我想到使用django-admin.py sql获取CREATE语句..但是我不知道如何使用这行从我的代码(而不是通过命令行)。
我尝试过os.popen和os.system,但它并没有真正的工作..
任何提示?
我会把它清楚地说明:
你如何使用代码里面的manage.py sql?
我将这样添加到我的视图中: p>
import os,sys
import imp
from django.core.management import execute_manager
sys_argv_backup = sys.argv
imp.find_module(settings)
导入设置
sys.argv = ['','sql','myapp']
execute_manager (设置)
sys.argv = sys_argv_backup
事情是 - 它有效..但它将语句写入stdout ...
它是一些东西,但不完美。我会直接尝试使用django.core.management.sql.sql_create,我们将看看它如何进行。
谢谢
我建议使用SQL特定的转储程序(例如 mysqldump for MySQL)。
对于嵌入在Python中的sqlite,您可以查看这个例子不涉及Django:
#将文件existing_db.db转换为SQL转储文件dump.sql
import sqlite3,os
con = sqlite3.connect('existing_db.db' )
with open('dump.sql','w')as f:
for con.iterdump()中的行:
f.write('%s\\\
'%行)
I'm trying to dump my data to SQL statements. the django-admin.py dumpdata provides only json,xml,yaml. so:
does someone know a good way to do it?!
I tried that:
def sqldumper(model):
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
so I'm going over the model values myself, and make the INSERT statement myself. then I thought of using "django-admin.py sql" to get the "CREATE" statement.. but then I don't know how to use this line from inside my code (and not through the command-line). I tried os.popen and os.system, but it doesn't really work.. any tips about that?
I'll put it clearly: how do you use the "manage.py sql " from inside your code?
I add something like this to my view:
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
the thing is - it works.. but it writes the statements to the stdout... it's something, but not perfect. I'll try using django.core.management.sql.sql_create directly, we'll see how it goes..
thanks
I suggest to use SQL-specific dump program (e.g. mysqldump for MySQL).
For sqlite embedded in Python, you can look this example not involving 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)
这篇关于django-admin.py dumpdata到SQL语句的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!