要求是将列表中的参数传递给python代码中存在的sql查询
parmlist.py
sale_call = [12,88]
yr_range = [2015,2016,2017,2018]
Codefile.py
conn = <connecting to MySQL>
cursor = conn.cursor()
cursor.execute(‘Insert into sales_repo select distinct a.yr_sll from cust_data a join proc_data b
On a.prd_key = b.prd_key where b.range1=?,b.range2=?,b.range3=? and b.yr in ?’)
我做了以下事情:
cursor.execute(‘Insert into sales_repo select distinct a.yr_sll from cust_data a join proc_data b
On a.prd_key = b.prd_key where b.range1=?,b.range2=?,b.range3=? and b.yr in ?’ ,parmist.sale_call[0],parmist.sale_call[1],parmist.yr_range[3])
但是parmist.yr_range[3]
似乎正在进入2018年。
而不是完整列出yr_range = [2015,2016,2017,2018]
它只是取最后一个值,即2018
如何在查询中将整个列表作为变量传递?
Update_1:
我尝试了以下操作:
sale_call = [12,88]
yr_range = [2015,2016,2017,2018]
cursor.execute(‘Insert into sales_repo select distinct a.yr_sll from cust_data a join proc_data b
On a.prd_key = b.prd_key where b.range1=?,b.range2=?,b.range3=? and b.yr in (' + ','.join(map(str, yr_range))’)
当我尝试通过python代码执行上述操作时,以上操作无效。但是在使用熊猫作为时执行:
pd.read_sql_query(‘Insert into sales_repo select distinct a.yr_sll from cust_data a join proc_data b
On a.prd_key = b.prd_key where b.range1=?,b.range2=?,b.range3=? and b.yr in (' + ','.join(map(str, yr_range))’,conn)
任何提示为什么它不起作用?
答案 0 :(得分:2)
我认为该错误只是您格式化查询字符串的方式中的某处。在这两种情况下似乎都错了,但是也许熊猫查询正在处理它。这使查询更容易遵循。
如果在<div id="ifr1"></div>
子句中将<VirtualHost *:443>
ServerName www.yoursite.com
DocumentRoot /var/www/site
SSLEngine on
SSLCertificateFile /path/to/www_yoursite_com.crt
SSLCertificateKeyFile /path/to/www_yoursite_com.key
SSLCertificateChainFile /path/to/DigiCertCA.crt
</VirtualHost>
用作?
值,则需要指定参数。我将它们取出是因为我不确定您打算如何使用它们。 b.range
函数将字符串中的WHERE
替换为以逗号分隔的字符串值的年份。
.format()