python - SQL 中的动态列格式 - 以及存储格式的后端

标签 python sql database database-design postgresql

我正在尝试用 Python 创建一个系统,在该系统中,可以从一组表格中选择多行,这些表格将以用户定义的方式进行格式化。假设表 a 有一组列,其中一些包含 datetimestamp 值。每个列的用户定义格式应该存储在另一个表中,并在运行时在主查询上查询和应用。

让我举个例子:有不同的方法来格式化日期列,例如使用

SELECT to_char(column, 'YYYY-MM-DD') FROM table;

在 PostgreSQL 中。

例如,我希望在运行时从另一个表动态查询 to_char() 内置函数的第二个参数,然后在它有值时应用它。

从这样的表中读取定义并不是什么大问题,而不是创建一个数据库方案,该方案将从用户界面接收数据,用户可以从中选择将哪些格式化指令应用于不同的列。用户应该能够选择要包含在用户查询中的用户列集,以及用户为每个列定义的格式。

几天来,我一直在考虑以一种优雅高效的方式执行此操作,但无济于事。让用户在文本字段中输入用户想要的定义并将其包含在查询中几乎会产生 SQL 注入(inject)攻击的邀请(尽管我可以使用 escape() 函数),并存储每个可能的组合对我来说似乎也不可行。

最佳答案

在我看来是stored procedure或者子选择在这里会很好用,尽管我还没有测试过。假设您在 users 表中为每个用户存储了一个 date_format

SELECT to_char((SELECT date_format FROM users WHERE users.id=123), column) FROM table;

您的里程可能会有所不同。

关于python - SQL 中的动态列格式 - 以及存储格式的后端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1503621/

相关文章:

SQL 连接查找两个数据源之间的不一致

sql - 字符串聚合组并计算一个值

c# - ORA-00936 : missing expression when filling dataset to OracleDataAdapter

python - 如何在 Django 中以编程方式批准所有已安装的应用程序权限

python - 如何比较两个 DF 中的两列并保持一些列常量并打印行?

python - multiprocessing 会是这个操作的一个很好的解决方案吗?

python - 这是基于 django 类的 View 的错误使用吗?

sql - 查询以根据列获取隔天的记录

MYSQL查询实例(QBE)

python - 按外键计数和分组并返回模型django