【问题标题】:Django 1.10 Create Model Tables AutomaticallyDjango 1.10 自动创建模型表
【发布时间】:2017-05-11 07:54:29
【问题描述】:

我想知道是否有任何方法可以使用 Django 1.10 在 SQLite 中创建一个新的模型表(例如编写一般的 python 代码),而无需在 models.py 中指定。情况是如果我的网站上注册了一个新成员,那么我将为他们创建一个新的模型表来保存他们的数据。具体来说:

第 1 步:John Doe 在我的网站上注册

第 2 步:系统创建一个名为 db_johnDoe 的模型表(具有与其他字段相同的字段集)

步骤3:系统可以根据John在网站上的行为插入和编辑db_johnDoe的数据。

有什么想法吗?非常感谢。

【问题讨论】:

    标签: database sqlite python-3.x django-models


    【解决方案1】:

    我认为为每个用户创建一个表不是一个好主意。这可能会导致性能不佳和安全性低下。为什么不创建一个名为userInfo 的表并将user.userID 作为外键?

    【讨论】:

    • 想要为不同的用户创建表的原因是: 1.不想让单个表太大,因为用户的数据随着时间的推移而积累。我预计随着时间的推移,一张用户表将包含数万条数据。大单表也会导致性能不佳; 2.另外,分离不同用户的数据使进一步的数据库管理更容易,例如从数据库中编辑和删除记录; 3.只是想知道,为了在我的Django学习中获得更多的知识。
    • 还有许多其他方法可以满足您的要求。 Anw,您可以通过调用原始查询来创建表,当然,您也必须通过原始查询来读取数据
    【解决方案2】:

    谢谢你们,尤其是@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命令也可以用这种方式执行。

    【讨论】:

      猜你喜欢
      • 2012-09-27
      • 2023-04-05
      • 2017-06-03
      • 2015-05-20
      • 1970-01-01
      • 2017-06-23
      • 2011-03-26
      • 2013-01-03
      • 1970-01-01
      相关资源
      最近更新 更多