2016-12-27 62 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命令也可以这种方式执行。