使用原始 SQL 查询生成表,并希望在 Django 中将这些表用作 ORM

Posted

技术标签:

【中文标题】使用原始 SQL 查询生成表,并希望在 Django 中将这些表用作 ORM【英文标题】:Generate table using raw SQL query and want to use those tables as ORM in Django 【发布时间】:2021-08-17 06:28:49 【问题描述】:
table_title = 'transaction_' + username
with connection.cursor() as cursor:
    sql = 'CREATE TABLE ' + table_title + '(id uuid NOT NULL,
    sql += 'amount numeric(10,2) NOT NULL,
    sql += 'CONSTRAINT transaction_pkey' + username + ' PRIMARY KEY (id),'
    cursor.execute(sql)

我已使用此代码创建表。 现在我想要什么:

我想在应用程序的 admin.py 中使用它们 我想在 Django 的管理面板中显示它们 我想将此表用作视图中的 ORM

有可能吗?如果是,那么如何?

【问题讨论】:

为什么不使用 django 模型?您可以在 models.py 中创建模型,并且可以使用内置的管理站点和 ORM。在这里使用原始 SQL 有什么好处? 我必须为每个用户单独创建表空间。示例:如果我使用用户名“rkshaon”注册,那么将为用户“rkshaon”生成不同的交易表。我必须这样做。 你为什么需要那个?您希望为每个用户使用单独的表的原因是什么? 因为我正在做一个项目,每个用户都会有大量数据。所以我要求为每个用户分开表格。 我很确定每个用户的这些庞大数据不会在一个表中,因为每种类型的数据都在不同的表中。也许首先你应该为每种类型的数据设计一个合适的数据库结构,然后看看那里是否有问题。您尝试做的事情听起来不合逻辑。 【参考方案1】:

在执行原始 SQL 时无法使用 ORM。如果你想要一个管理面板,你必须开发自己的自定义管理面板。

【讨论】:

欢迎来到 SO。作为评论而不是答案,这会更好。查看how to answer

以上是关于使用原始 SQL 查询生成表,并希望在 Django 中将这些表用作 ORM的主要内容,如果未能解决你的问题,请参考以下文章

.net 从数据库表运行时生成类

使用 sql 变量在范围内生成表

从 Phalcon 查询生成器获取原始 sql

如何让查询生成器将其原始 SQL 查询输出为字符串?

如何让查询生成器将其原始 SQL 查询输出为字符串?

我如何将 SQL 原始查询重写为 Laravel 查询生成器