2012-05-12 120 views
0

我嘗試將數據填充到我的數據庫中,我想使用django API來這樣做。我寫了一個python模塊,可以讓我很輕鬆地做到這一點。從django shell運行python模塊(manage.py)

但是,在django shell(manage.py)中,似乎無法運行我的「populate.py」文件。

是否有可能從django shell運行我的populate.py?或者,我是否應該運行一個普通的Python終端並導入必要的django組件?無論如何,我會非常感謝一些指標。

+1

你是否嘗試從django shell內導入填充?導入填充; populate.main()或類似的東西... – vasek1

回答

1

這裏是我的命令行運行的Django的東西標準包裝。如果您有要運行的cron腳本,這也很有用。

#!/usr/bin/env python 
# -*- coding: utf-8 -*- 

import os, sys 
# If this script lives in a child directory of the main project directory 
# uncomment the following 2 lines: 
#dir_parent = os.path.dirname(os.path.dirname(os.path.realpath(__file__))) 
#sys.path.insert(0, dir_parent) 

from django.core.management import setup_environ 
import settings 
setup_environ(settings) 

from django.db import transaction 

# import whatever you like from app.models or whatever 
# do random stuff. 

# If you are *changing* database records, 
# wrap your database code either in: 
@transaction.commit_manually 
def foo(): 
    ... stuff 
    transaction.commit() 

# OR end you script with: 
transaction.commit_unless_managed() 

更新評論:

上面提到的變量不是file,它是__file__(即2下劃線file和2多個下劃線)。這總是由Python解釋器設置爲它所在文件的完整路徑。如註釋所示,如果此腳本位於主目錄的子目錄中,則文件名的目錄目錄將爲您提供主項目目錄的目錄名稱,並將其添加到sys.path將確保所有導入工作正常。如果腳本在主目錄中生存,並從那裏執行它,則不需要這樣做。

+0

謝謝!但是,我現在正在收到「Traceback(最近呼叫的最後一個): 文件」「,第1行,在 dir = os.path.dirname(os.path.dirname(os.path.realpath(__ file__) )) NameError:名稱'__file__'未定義「 – snakesNbronies

+0

請參閱我的更新答案。 –

+0

謝謝!我只是有一些語法問題。現在工作。但是,我仍然決定將其作爲自定義django-admin命令進行打包,以避免將來需要此類事物。 – snakesNbronies

0

嘗試django-extensions它有一個腳本目錄中的腳本命令。

奇怪的命令似乎從主要文件丟失,但如果你谷歌django擴展腳本你會發現的例子和文件。

相關問題