Django的ORM非常的好用导帝,特別是migration. 熟練了以后幾乎不用運(yùn)行SQL就可以管理數(shù)據(jù)庫(kù)和無(wú)縫升級(jí)Schema. 可生活不只有網(wǎng)頁(yè)啊虚缎,我想寫(xiě)個(gè)桌面程序撵彻,能不能也用它呢?答案當(dāng)然是可以的实牡。
得益于Django良好的代碼結(jié)構(gòu)陌僵,Django的orm并不需要任何網(wǎng)頁(yè)相關(guān)的代碼,那只需要模擬一個(gè)django項(xiàng)目的結(jié)構(gòu)就可以了创坞。
手動(dòng)創(chuàng)建象下圖的數(shù)據(jù)結(jié)構(gòu)碗短,熟悉django的同學(xué)就會(huì)發(fā)現(xiàn)很象django項(xiàng)目,這樣就避免了可能會(huì)有的代碼路徑問(wèn)題题涨。
在manage.py中偎谁,我們要引入settings和必要的命令行支持去運(yùn)行migration
import os
import sys
if __name__ == "__main__":
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "settings")
from django.core.management import execute_from_command_line
execute_from_command_line(sys.argv)
settings.py 中加上數(shù)據(jù)庫(kù)信息,和引入data這個(gè)app
# settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': 'sqlite.db',
}
}
INSTALLED_APPS = (
'data',
)
SECRET_KEY = 'REPLACE_ME'
models.py里創(chuàng)建我們需要的model即可
from django.db.models import Model, TextField, CharField
class Stock(Model):
name = CharField(max_length=20,default='')
stockid = CharField(max_length=20,default='')
main.py 就是我們真正的項(xiàng)目代碼纲堵,但需要引入正確的django庫(kù)
import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "settings")
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
from data.models import *
s = Stock(name='test')
s.save()
first = Stock.objects.all()[0]
print(first.name)
最后別忘了運(yùn)行makemigrations和migrate命令巡雨。再運(yùn)行main.py, 真香!