我想使用外部腳本預填充我的數據庫。腳本如下從外部腳本訪問django sqlite數據庫
# -*- coding:utf-8-*-
import os, sys
from random import choice
PROJECT_DIR = os.path.abspath(os.path.join(os.path.abspath(__file__),'..','..'))
sys.path.append(PROJECT_DIR)
os.environ['DJANGO_SETTINGS_MODULE']='geoedu.settings'
from school.models import School
from student.models import Student
if __name__=='__main__':
student = Student(first_name=choice(first_names_males), last_name=choice(last_names_males),
father_name=choice(first_names_males), mother_name=choice(first_names_females),
mobile=choice(mobiles), telephone=choice(telephones))
student.save()
其中在選擇的參數是名單和電話列表。當我運行它,雖然我得到以下錯誤
django.db.utils.DatabaseError: no such table: student_student
目錄樹
geoedu
├── geoedu
│ ├── __init__.py
│ ├── __init__.pyc
│ ├── settings.py
│ ├── settings.pyc
│ ├── urls.py
│ ├── urls.pyc
│ ├── wsgi.py
│ └── wsgi.pyc
├── geoedu.db
├── geoedu.sublime-project
├── geoedu.sublime-workspace
├── manage.py
├── school
│ ├── admin.py
│ ├── admin.pyc
│ ├── __init__.py
│ ├── __init__.pyc
│ ├── models.py
│ ├── models.pyc
│ ├── tests.py
│ └── views.py
├── scripts
│ └── populate.py
└── student
├── admin.py
├── admin.pyc
├── __init__.py
├── __init__.pyc
├── models.py
├── models.pyc
├── tests.py
└── views.py
它所做的是它創建的腳本文件夾中的一個新的geoedu.db並使用(這是空的,沒有student_student的課程表)
爲什麼會發生這種情況?PROJECT_DIR是正確的(打印出來),它是所有頂層geodedu樹的根。
編輯:新建geoedu.db時創建新學生。如果我註釋掉這些行geoedu.db沒有創建。
,但在設置你怎麼有定義的數據庫結構文件? – Juliusz
你的意思是怎樣的? ENGINE':'django.db.backends.sqlite3',。 'NAME':'geoedu.db',... etc 它與project_dir在相同的目錄中創建,您可以從樹命令中看到。 – Apostolos
工作......猜測使用sqlite3時,數據庫的名稱必須始終是路徑而不只是名稱。感謝@Juliusz爲我指出了正確的方向 – Apostolos