因爲在Web的後臺代碼種也涉及到很多數據庫端(model)的操作,所以不得不使用Django自帶的QuerySets API。
QuerySets API一共有三個入口
1. 純淨的python shell
2.在app的目錄下執行 python manage.py shell
3.在python腳本里使用
我主要使用的是第三種,這種方式可以把腳本保存下來複用。
因爲對Django不是很熟,在配置文件和環境變量還有路徑問題上花費了不少時間和精力。
首先新建一個.py文件檢查一下環境變量的配置,需要留意的是PYTHONPATH配置的路徑。
import os
for i, v in enumerate(os.environ.items(), 1):
print(i, v)
然後用下面的腳本來跑通對數據庫(model)的操作
import os
if __name__ == "__main__":
# 指定這個.py腳本需要加載的Djangop配置文件
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myapp.settings")
import django
django.setup()
from myapp.models import MyModel
print(MyModel.objects.all())
print(MyModel.objects.count())
需要注意的是myapp.setting 這個路徑是基於環境變量裏的PYTHONPATH來的,如果沒有配置或者配置有問題的話就用最原始的方式添加或更改就行了, windows 在控制面板下面的environment variable裏就能找到.
另外因爲python識別package的機制,在package的路徑必須要建一個叫__init__.py的腳步,裏面內容是空的就ok.
比如myapp這個路徑下面就一定要有__init__.py,這樣Django才能找到他下面的myapp.settings。
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myapp.settings")
最後在引入模塊這一行我也遇到了不少問題,因爲python的模塊搜索路徑機制,在if __name__ == "__main__"代碼塊裏python會到PYTHONPATH配置的路徑下面去找相應的模塊,而且無法使用相對路徑。
所以from後面的模塊要基於PYTHONPATH裏的路徑配置。
from myapp.models import MyMode