2016-12-27 144 views
0

我想知道是否有任何方法在Django 1.10(如編寫一般python代碼)SQLite中創建一個新的模型表,而無需在models.py中指定。情況是,如果在我的網站上註冊了一個新成員,那麼我將爲他們創建一個新的模型表來保存他們的數據。具體做法是:Django 1.10自動創建模型表

第1步:李四註冊在我的網站

第2步:系統創建一個名爲db_johnDoe模型表(用同一組領域其他的)

第3步:系統可以根據John在網站上的行爲插入和編輯db_johnDoe的數據。

有什麼想法?非常感謝。

回答

1

我認爲爲每個用戶創建一個表並不是一個好主意。這可能會導致性能不佳和安全性低下。你爲什麼不創建一個名爲userInfo的表格,並把user。作爲外鍵的userID

+0

想要爲不同用戶創建表的原因是: 1.不想讓單個表太大,因爲用戶的數據會隨着時間積累。隨着時間的推移,我預計一個用戶表將包含數以萬計的數據。大單桌也造成糟糕的表現;另外,分離不同用戶的數據使得進一步的數據庫管理更容易,如編輯和從數據庫中刪除記錄;和 3.只是想知道,爲了我的Django學習更多的知識。 –

+0

還有很多其他方法可以滿足您的要求。 Anw,您可以通過調用原始查詢並關閉課程來創建表格,您還必須通過原始查詢來讀取數據 – HaryTD

+0

https://docs.djangoproject.com/en/1.10/topics/db/sql/#executing-定製sql直接 – HaryTD

-1

謝謝你們倆,特別是@Hary TD的參考,這非常有幫助。在此基礎上,我想出瞭如何做到這一點,總結如下,供他人蔘考:

from django.db import connection 
db_name = 'ADDRESSES'  

cursor = connection.cursor() 
cursor.execute("""CREATE TABLE %s (
    USERNAME VARCHAR(64) NOT NULL PRIMARY KEY, 
    ADDRESS VARCHAR(64), 
    CITY VARCHAR(64), 
    ZIPCODE VARCHAR(16), 
    UNIQUE (ADDRESS, CITY, ZIPCODE))""" % db_name) 

其他sql命令也可以這種方式執行。