python带参数mysql查询_Python迭代,在MySQL查询中将列表传递给参数

我试图遍历Python列表,以便在MySQL中有多个查询,但是“%s”参数包含引号,并且我的查询中只有0(0)(当我知道应该得到一个不同的数字时)。在

代码:def export_data():

infos = [

'Conta Corrente Itau',

'Cartao Itau Master',

'Cartao Itau VISA',

'Carteira'

]

chart_of_accounts = list(infos)

for account in chart_of_accounts:

cnx = mariadb.connect(user='root', password='', database='base_completa')

cursor = cnx.cursor()

params = (account, account)

query = """

SELECT Y, M,(@total := @total + Fluxo) AS ValorTotal

FROM (

SELECT year(data) AS Y, month(data) AS M,

(

SUM(IF(Credito="%s", valor, 0))-

SUM(IF(Debito="%s", valor, 0))

) AS Fluxo

FROM ledger

GROUP BY YEAR(DATA), MONTH(DATA)

) AS T,

(SELECT @total:=0) AS n;

""" % (params)

cursor.execute(query)

rows = cursor.fetchall()

desc = cursor.description

lista = [dict(itertools.izip([col[0] for col in desc], row))

for row in rows]

cnx.commit()

print account

print json.dumps(lista)

return lista

results = export_data()

我也试过:

^{pr2}$

但我还是得零分。

我认为它在参数中包含了引号,因此它正在进行的查询是:SUM(IF(Credito=""Conta Corrente Itau"", valor, 0))

编辑:(实际上,它没有将list元素传递给查询,因此它在查询:SUM(IF(Credito="%s", valor, 0))

但我不确定。在

除此之外,它似乎工作得很好,因为我的“检查指纹”给了我预期的结果。在

已解决:

当MySQL查询中有多个参数时,我发现有一个线程回答了我的问题:添加一个聚合参数的“params”变量。在params = (account, account)

然后在查询(""")结束后添加% (params)

用一个有效的代码更新了代码。

仍然不知道这是好的做法还是最好的方法,但它是有效的。在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值