python - Django:以编程方式/动态创建数据库表

标签 python mysql django database django-south

我开发 Django 应用程序已经有一段时间了,并且遇到了动态模型和数据库表生成的需求。我进行了广泛的搜索,似乎 Django API 不包含此功能。据我收集的信息,South有一个函数可以做到这一点(即south.db.create_table)。然而,从我从 South 的发行说明中收集到的信息来看,South 与 Django 1.7 及更高版本不兼容,而我的项目是使用 Django 1.9 构建的。

我已经编写了一个脚本,用于创建我想要使用以下方法迁移到数据库的模式的模型实例:

attrs = {'__module__':model_location, 'Meta':Meta}
model = type(table_name, (models.Model,), attrs)

附:请注意,这不是上述脚本的全部。如果您认为这对我有用,我可以根据要求添加它。

有人找到了将 South 1.0.2 与 Django 1.9 一起使用的解决方法吗?如果没有,有人知道我如何在没有南的情况下实现此功能吗?我试图考虑替代方法(而不是动态生成表),但这看起来确实会在我的项目范围内提供最简洁和干净的结果。

谢谢!

最佳答案

South 与最新 Django 版本不兼容的原因是它已 rolled into Django从 Django 1.7 开始,名称为“migrations”。如果您正在寻找类似的功能,起点将是 documentation on migrations 。您可能特别对 RunSQL 部分感兴趣。 .

如果您希望避免迁移模块,您也可以 perform raw SQL queries .

关于python - Django:以编程方式/动态创建数据库表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40135179/

相关文章:

python - 预期密集输入具有形状 (7,),但得到形状为 (1,) 的数组

django - 如何使用 Django 身份验证在 Node 应用程序中对用户进行身份验证?

python - Django Channels 停止使用 self.receive_lock.locked 错误

python - 应用过滤器后引用 django-templates 中的键/值

python - Tkinter 嵌入图形子流程

python - python 3的数据库?

python - 如何使用 cassandra.yaml 正确配置 Apache Cassandra 4 节点集群?

php - 如何在 3 个不同的表中使用 while 循环来回显数据库的特定列

php - 在输出之前转换 mysql 输入。 Unix 时间戳到 PHP DateTime

mysql - 选择查询中有特定的单词记录