我正在使用Django,我创建了两个数据库。一切似乎工作正常,但后来我必须编辑其中一个并添加一个列..从那一刻数据库将不再工作,所以我在文本文件中导出第一个数据库并思考“现在我重新创建两个db并运行一个python脚本来重新填充第一个“。问题是,当我尝试运行脚本时,我得到错误,因为我无法使用os.system运行像bash这样的命令,我真的不知道其他任何方式......所以,这是我的代码:< / p>
import os
def func ():
try:
FILE=open ("./languagedb.txt", "r")
except IOError:
print 'Can\'t open db file'
exit (1)
for line in FILE:
if (line.startswith('INSERT')):
values=line[43:-1]
language=values[1:3]
values=values[6:]
field=""
fieldBool=True
i=0
while fieldBool:
try:
c=values[i]
except:
print ''
if c != '\'':
field=field+str(c)
i=i+1
else:
fieldBool=False
values=values [(i+3):]
text=""
textBool=True
i=0
while textBool:
try:
c=values[i]
except:
print ''
if c != '\'':
text=text+str(c)
i=i+1
else:
textBool=False
comand="Language.objects.create(language=\""+language+"\", text=\""+text+"\", campo=\""+field+"\")"
os.system(comand)
这就是我调用shell的方式:
python manage.py shell
以及我给它的命令:
import django
from languageMods.models import *
import mymigration #The name fo the file containing the above code
mymigration.func()
我收到以下错误,例如
sh: -c: line 0: syntax error near unexpected token `language="en",'
这是shell的错误。 有人知道如何从python shell中的python脚本执行命令吗?
答案 0 :(得分:1)
如果您按照描述的方式启动脚本,则可以直接在代码中调用django DB API:
Language.objects.create(language=language, text=text, campo=field)