从python(Django)shell中的python脚本运行python命令。 Django的

时间:2016-10-27 05:56:18

标签: python django shell

我正在使用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脚本执行命令吗?

1 个答案:

答案 0 :(得分:1)

如果您按照描述的方式启动脚本,则可以直接在代码中调用django DB API:

Language.objects.create(language=language, text=text, campo=field)