我嘗試將數據填充到我的數據庫中,我想使用django API來這樣做。我寫了一個python模塊,可以讓我很輕鬆地做到這一點。從django shell運行python模塊(manage.py)
但是,在django shell(manage.py)中,似乎無法運行我的「populate.py」文件。
是否有可能從django shell運行我的populate.py?或者,我是否應該運行一個普通的Python終端並導入必要的django組件?無論如何,我會非常感謝一些指標。
我嘗試將數據填充到我的數據庫中,我想使用django API來這樣做。我寫了一個python模塊,可以讓我很輕鬆地做到這一點。從django shell運行python模塊(manage.py)
但是,在django shell(manage.py)中,似乎無法運行我的「populate.py」文件。
是否有可能從django shell運行我的populate.py?或者,我是否應該運行一個普通的Python終端並導入必要的django組件?無論如何,我會非常感謝一些指標。
這裏是我的命令行運行的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
將確保所有導入工作正常。如果腳本在主目錄中生存,並從那裏執行它,則不需要這樣做。
謝謝!但是,我現在正在收到「Traceback(最近呼叫的最後一個): 文件」
請參閱我的更新答案。 –
謝謝!我只是有一些語法問題。現在工作。但是,我仍然決定將其作爲自定義django-admin命令進行打包,以避免將來需要此類事物。 – snakesNbronies
嘗試django-extensions它有一個腳本目錄中的腳本命令。
奇怪的命令似乎從主要文件丟失,但如果你谷歌django擴展腳本你會發現的例子和文件。
你是否嘗試從django shell內導入填充?導入填充; populate.main()或類似的東西... – vasek1