python - 执行不返回任何内容的查询时会创建什么样的表?
问题描述
我正在使用 petl 并尝试使用查询中的值创建一个简单的表。我写了以下内容:
@staticmethod
def get_base_price(date):
# open connection to db
# run SQL query to check if price exists for that date
# set base price to that value if it exists
# set it to 100 if it doesn't
sql = '''SELECT [TimeSeriesValue]
FROM [RAP].[dbo].[TimeSeriesPosition]
WHERE TimeSeriesTypeID = 12
AND SecurityMasterID = 45889
AND FundID = 7
AND EffectiveDate = %s''' % date
with self.job.rap.connect() as conn:
data = etl.fromdb(conn, sql).cache()
return data
我正在连接到数据库,如果该日期有值,那么我将能够创建一个如下所示的表:
+-----------------+
| TimeSeriesValue |
+=================+
| 100 |
+-----------------+
但是,如果查询不返回任何内容,那么表会是什么样子?如果查询不返回任何内容,我想将 TimeSeriesValue 设置为 100。不知道该怎么做。
解决方案
您应该在执行语句时传递参数,而不是修改字符串。. 但这不是您问题的核心。
可能最简单的解决方案是在 SQL 中完成所有工作。如果您期望查询中最多有一行,则:
SELECT COALESCE(TimeSeriesValue, 100) as TimeSeriesValue
FROM [RAP].[dbo].[TimeSeriesPosition]
WHERE TimeSeriesTypeID = 12 AND
SecurityMasterID = 45889 AND
FundID = 7 AND
EffectiveDate = %s
这将始终返回一行,如果没有找到,它将放入该100
值。
推荐阅读
- git - 如何根据条件使詹金斯工作失败?
- mysql - MYSQL:如何快速导入大型数据库?
- c# - Unity 中的音乐播放器问题
- gnu-make - 在 scons 下并行运行 make
- javascript - 如何使我的 javascript 与 wp_enqueue_script 一起工作?
- javascript - 如何在 CanvasJS 中创建一个 Y 轴数量不确定的图表?
- python - 如何使用列名作为标记将 XLSX 写入 XML
- mongodb - mgo 将 objectid 设置为 objectidhex,Mongodb 似乎无法读取它
- bootstrap-4 - 单击后切换按钮会立即消失吗?
- android - android studio中存储的实现版本字符串在哪里