Python中SQL语句的分次合成
在python执行sql语句时,需要事先准备。有时候会碰到比较复杂的参数填入时,似乎无法一步到位,这个时候,可以考虑分步写入。
比如以下一个sql输入:
需要一个范围清单,以及一个指定时间值。
sql = "Select ... from DB where col in (A) and myDatetime>(B)"
这个sql字符串,考虑使用分布填写比较容易操作。
第一步:
sql = "Select ... from DB where col in (A)..." #请查找一下将list中的值填写入字符串的方法,是一个格式化的手段进行的
提供两个找到的格式化方式
#提供两个找到的格式化方式
Test_list = ['a','b','c']
sql = "select * from DB where col in ('%s')"% ("','".join(Test_list))
print(1,sql)
sql = "select * from DB where col in (%s)" % ','.join(["'%s'" % item for item in Test_list])
print(2,sql)
第二步:
sql += " where myDatetime>%s"%(str_yourSettingTime)
cursor = connections['dbname'].cursor()
cursor.execute(sql)
其中第一步的目的就是将查询字符串到第二步之前,就以及包含了所有list元素,到了第二步就可以把sql作为一个已知的字符串进行操作了。
当然,也可以将第二个参数作为execute的参数部分输入。
sql += " where myDatetime>%s"
tup_Para =(str_yourSettingTime,)
cursor = connections['dbname'].cursor()
cursor.execute(sql,tup_Para)
注意前面sql的那个hwere前的空格,以及tup_Para的括号中的那个逗号‘,'。