gpt4 book ai didi

python-2.7 - mysql.connector,multi = True,sql变量赋值不起作用

转载 作者:行者123 更新时间:2023-12-03 15:18:00 24 4
gpt4 key购买 nike

SQL代码(全部保存在一个文件中,该文件最终保存在python变量“query”中):

select @dtmax:=DATE_FORMAT(max(dt), '%Y%m') from table_A;
delete from table_B where DATE_FORMAT(dt, '%Y%m')=@dtmax;

像我在上面的查询中所做的那样,mysql-connector是否允许使用变量赋值。即从TABLE_A中获取max(date)的值,然后从TABLE_B中删除具有该日期的所有内容。

python代码:
    c = conn.cursor(buffered=True)
c.execute(query, multi=True)
conn.commit()
conn.close()

我所知道的是第二条SQL语句不执行。

我可以将SQL代码复制并粘贴到Toad中,然后在其中运行,而不会出现任何问题,但是不能通过mysql.connector库。我会用 Pandas ,但这是别人写的遗留脚本,我没有时间重写所有内容。

非常感谢您的帮助。

最佳答案

当您使用multi=True时,execute()将返回一个生成器。您需要遍历该生成器,以将处理实际推进到多语句查询中的下一个sql语句:

c = conn.cursor(buffered=True)
results = c.execute(query, multi=True)
for cur in results:
print('cursor:', cur)
if cur.with_rows:
print('result:', cur.fetchall())
conn.commit()
conn.close()
如果当前语句有要提取的结果,则 cur.with_rows将为 True
所有这些都在 MySQLCursor.execute() 的文档中进行了描述。

关于python-2.7 - mysql.connector,multi = True,sql变量赋值不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32194638/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com