是否可以編寫Django應用程序,例如用於內部/個人用於現有數據庫,而不需要在開始項目時安裝通常安裝的Djangos自己的表的「開銷」?我想通過模型使用現有的表格,但沒有其他所有在普通網頁上確實有用的東西。Django沒有額外的表?
原因是建立小型個人檢查/管理工具,而不會侵入傳統數據庫。
是否可以編寫Django應用程序,例如用於內部/個人用於現有數據庫,而不需要在開始項目時安裝通常安裝的Djangos自己的表的「開銷」?我想通過模型使用現有的表格,但沒有其他所有在普通網頁上確實有用的東西。Django沒有額外的表?
原因是建立小型個人檢查/管理工具,而不會侵入傳統數據庫。
定義數據庫表的最明顯的應用程序是django.contrib.auth
,它在數據庫中實現了自己的auth後端。如果你的應用被防火牆阻擋,並且你信任所有可以訪問它的人,你大概可以跳過一起認證。否則,您希望使用現有基礎架構創建自己的身份驗證機制,您很可能需要使用另一個後端。如果您的網絡服務器設置爲REMOTE_USER
,則可以使用,並且應該關閉並運行。否則,你將不得不實施你自己的引用其他認證來源。
從那裏你只需要設置你的模型使用現有的數據庫表,而不是讓他們自己做。你可以在這個非常精細的控制,例如
class MyModel(django.db.Model):
MyTextField = django.db.TextField(db_column="mytextfield", primary_key=True)
class Meta:
db_table = "my_table"
這樣你可以指定精確的表,並從每個模型的每個字段應代表列。請注意,您可以將主鍵設置爲非整數類型。 django的ORM的侷限性在於,每個模型必須只有一個主鍵。所以如果你的表沒有主鍵,可以添加一個,或者你必須在沒有django的ORM的幫助下相處。
此外,由於您正在綁定現有的數據集,可能與其他應用程序有關,因此您可能不想使用./manage.py syncdb
,因爲它可能會執行一些不需要的操作。
Django本身不安裝任何表。它帶有一些預製應用程序,它們安裝表格,但是通過從INSTALLED_APPS
設置中刪除它們可以輕鬆禁用這些應用程序。
我知道,這很容易從課程的名稱被發現。我的意思是沒有他們我能走多遠? – 2009-08-21 18:18:31
那麼,你將無法使用任何需要它們的應用程序。例如,如果您不需要用戶和權限表,那麼您將無法驗證Django用戶。 – 2009-08-21 18:46:29
不要安裝任何Django的內置應用程序,也不要在您的應用程序中使用任何models.py
。您的數據庫將包含零表格。
您不會有用戶,網站或會話 - 那些是使用數據庫的Django功能。
AFAIK你應該仍然有一個SQLite數據庫。我認爲Django的某些部分假設你有一個數據庫連接,它可能會嘗試建立這個連接。
這是一個簡單的嘗試。
只是在您的項目settings.py文件(在項目的開始,在運行syncdb之前)中INSTALLED_APPS元組的應用程序字符串django。
你也可以添加一個額外的數據庫(它設置爲默認值)保持額外的開銷Django的東西在:
DATABASES = {
'default': {
'ENGINE' : 'django.db.backends.sqlite',
'NAME' : 'djangoOverhead',
'USER' : '',
'PASSWORD' : '',
'HOST' : 'localhost' },
'legacyAppTables': {
'ENGINE' : 'django.db.backends.mysql',
'NAME' : 'legacyAppTables',
'USER' : '',
'PASSWORD' : '',
'HOST' : 'someRemoteHost' }, }
非常感謝,那正是我期待的答案! :-) – 2009-08-21 18:55:23