问题标签 [pypika]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1345 浏览

python - 如何使用 pypika 连接到数据库?

阅读文档非常清楚如何构建查询,但我找不到任何教程如何连接到数据库 - 即指示 pypika 使用哪个数据库、哪些凭据等。如何使用 pypika 连接到数据库?

0 投票
1 回答
983 浏览

python - 如何使用“Min()”创建 SQL Pypika 查询

我正在尝试创建一个使用 SQL 的 MIN('') 函数的 Pypika 查询。Pypika支持该功能,但我不知道如何使用它。

基本上我想在 Pypika 中创建这个 SQL 语句:

我尝试过这样的事情:

及其变体,但无法弄清楚如何使用此功能。周围没有很多例子。

提前致谢。

0 投票
1 回答
1202 浏览

python - Pypika:是否可以在 where 子句中动态更改运算符

我正在使用 Pypika 查询 HDB。通常我创建查询,然后添加这样的 where 子句:

现在我有一种情况,我不知道将使用哪个运算符。我可以是任何可能的操作员:

有没有办法动态指定 Pypika 的运算符?目前我正在这样做:

但我想做这样的事情:

感谢您的任何意见!

PS:不确定您是否在这里这样做:也许有更多积分的人可以为 Pypika 库添加标签

0 投票
1 回答
180 浏览

python - 基于条件的python匹配运算符函数

在使用带有运算符的 pypika 生成查询时,我对使用多个条件感到有些困惑。

operator.eq使用上面的代码,我可以使用for添加条件,equal我们可以进行其他操作,如下所示。

在我的情况下,我动态地获得操作值

如何在不添加大量if条件的情况下形成查询?operator.eq相反,我试图找到一个函数并使用它们operator.le(a, b)Equal调节?LessThanOrEqualwhere

0 投票
1 回答
612 浏览

pypika - PyPika如何生成IF语句

如何在 PyPika 中生成 IF 语句?

我正在尝试生成一个 BigQuery 查询,它将一行旋转到一列。我发现如果我在查询中使用以下内容(其中 date_range 来自 WITH 语句):

那么这将起作用。但是,我还没有找到在 PyPika 中生成这个 SQL 片段的方法。

为了完整起见,这是我需要在 BigQuery 中运行的查询示例:

我遇到的更普遍的问题是,有没有办法将文字字符串传递给 PyPika,以便将这些字符串包含在生成的查询字符串中?Pypika 没有生成几个 SQL 片段(例如GENERATE_DATE_ARRAYUNNEST,至少据我所知),将实际的 SQL 片段传递给 PyPika 可以解决问题。

谢谢!

0 投票
1 回答
100 浏览

snowflake-cloud-data-platform - 如何在 Pypika 中“最少”使用雪花?

Snowflake 有一个名为LEAST的函数,它可以应用于两列,并为每一行返回较低的值。

使用 pypika 构建 SnowflakeQuery 时如何使用该功能?

0 投票
1 回答
745 浏览

python - PyPika 创建动态 Where 语句

我正在使用 PyPika 构建 SQL 查询。我想根据外部方(account_list)的输入动态添加“OR”子句。我没有看到任何有关如何执行此操作或是否可能的文档。

例子:

无论列表中有多少,是否可以从 account_list 填充标准值?

非常感谢您提前。

0 投票
0 回答
833 浏览

pypika - PyPika如何选择星减去一列

我正在尝试使用 PyPika 构建一个选择语句。两个表都有一个id列,我试图从两个表中选择所有列,但id第一个表中的列除外。

这是我想要结束的查询,它在 BigQuery 中正常运行:

SELECT t.* EXCEPT(id), s.* from t join s on t.id = s.id

我一直无法弄清楚如何EXCEPT进入 select 子句。

我尝试了以下语法,但except_of()在这种情况下是不允许的:

我还尝试了一个自定义函数,但这会在结果查询中放置一个无效的逗号。这是我尝试过的:

错误地生成

SELECT t.*, EXCEPT(id), s.* from t join s on t.id = s.id

有没有人对如何解决这个问题有任何建议?

0 投票
1 回答
652 浏览

pypika - PyPika with 子句的控制顺序

我正在使用 PyPika(版本 0.37.6)创建要在 BigQuery 中使用的查询。我正在构建一个包含两个WITH子句的查询,一个子句依赖于另一个子句。由于我的应用程序的动态特性,我无法控制将这些WITH子句添加到查询中的顺序。

这是示例工作代码:

这会生成一个有效的查询:

WITH a AS (SELECT '1' z,'2' y) ,b AS (SELECT a.z FROM a) SELECT a.y,b.z FROM a,b

但是,如果我b WITH先添加子句,那么由于a尚未定义,结果查询:

WITH b AS (SELECT a.z FROM a), a AS (SELECT '1' z,'2' y) SELECT a.y,b.z FROM a,b

不起作用。由于 BigQuery 不支持WITH RECURSIVE,因此这不是我的选择。

有没有办法控制WITH子句的顺序?我_with在 QueryBuilder 中看到了列表(变量的类型q),但由于这是一个私有变量,我不想依赖它,尤其是新版本的 PyPika 可能不会以相同的方式运行。

我尝试这样做的一种方法是始终WITH在列表的开头插入第一个子句_with,如下所示: q._with.insert(0, q._with.pop()) 虽然这可行,但我想使用 PyPika 支持的方式来做到这一点。

在一个相关问题中,PyPika 中是否有一种支持的方式来查看已添加到选择列表或查询的其他部分的内容?我注意到q.selects成员变量,但selects不是公共文档的一部分。在使用q.selects我们项目的 Python 版本(3.6)时,使用实际上对我不起作用,即使它在 Python 3.7 中确实有效。我试图使用的代码是:

我得到的错误如下:

预先感谢您的帮助。

0 投票
1 回答
745 浏览

python - 克隆和修改模块的github repo后如何导入python模块

我正在尝试为托管在 Github ( pypika )上的 python 模块做出开源贡献。

我从 github 克隆了 repo 并pip以可编辑的安装模式运行,这样任何未来的导入都将指向我的代码版本。

但是当我尝试在 repo 中运行测试文件时,尝试导入模块时出现错误。我究竟做错了什么?我怎样才能做到这一点,以便导入将使用我正在处理的修改后的模块?