Pypika生成SELECT查询时AS别名子句缺失问题咨询
问题原因
你的写法存在两个问题,分别对应别名无AS、日期范围错误两个现象:
- AS别名子句缺失:Pypika默认生成SQL时会省略可选的AS关键字(SQL标准允许列别名直接跟在列名后,AS非强制),不是你
as_()方法写错了,只是默认输出不显示AS而已。 - BETWEEN日期范围错误:你的代码里日期切片部分多写了一个单引号,
''2016-12-29'存在语法错误,导致参数解析失败,才生成了错误的默认日期范围。
修正方案
修改代码如下:
from pypika import Query, Table tb = Table('trades_features') query = Query.from_(tb) \ .select(tb.date.as_('x_date'), tb.count.as_('x_count')) \ .where(tb.ticker == 'AAU') \ .where(tb.date['2012-12-26':'2016-12-29']) # 调用get_sql时传入with_alias_as=True参数显示AS关键字 print(query.get_sql(with_alias_as=True))
运行后生成的SQL和你预期的效果完全一致。
内容的提问来源于stack exchange,提问作者Wishwa Perera
相关产品推荐
相关产品推荐

