使用psycopg2和postgresq构建动态SQL查询

2024-09-29 07:32:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我真的不确定最好的解决方法,或者我只是要求一个比它更简单的生活。我有一个web应用程序的后端,我喜欢用原始SQL编写所有查询。例如,获取特定的用户配置文件,或多个用户,我有这样一个查询:

SELECT accounts.id,
    accounts.username,
    accounts.is_brony,
WHERE accounts.id IN %(ids)s;

这真的很好,因为我可以获得一个用户配置文件,或者使用同一个查询获得多个用户配置文件。现在我真正的查询实际上差不多有50行长。对于这个概要文件,它有很多连接和其他条件。在

假设我想从一个用户配置文件中获取所有相同的信息,但是我想要的不是一个特定的用户ID,而是一个随机的用户?我不认为复制粘贴50行代码只是为了修改末尾的两行代码。在

^{pr2}$

有没有什么方法可以在构建查询时使用某种继承,以便在最后修改一些条件的同时保持核心相似性?在

我确信我可以通过连接字符串之类的方法来管理它,但是我很好奇是否有一种更为广泛接受的方法来处理这种情况。谷歌让我失望了。在


Tags: 方法代码用户webid应用程序sqlis
1条回答
网友
1楼 · 发布于 2024-09-29 07:32:58

规范的答案是创建一个视图,并在查询中使用不同的WHEREORDER BY子句。在

但是,根据您的查询和表,对于您的特殊情况,这可能不是一个好的解决方案。在

使用WHERE accounts.id IN (1, 2, 3)快速执行的查询可能在ORDER BY random() LIMIT 1时执行得非常糟糕。在这种情况下,您必须针对第二个需求提出不同的查询。在

相关问题 更多 >