我们的脚本在过去 4 年里一直运行良好。它从 SugarCRM 应用程序中提取大量数据,然后打印一些报告。
我正在使用 Python-MySQLDB 来提取数据。
db = mdb.connect('localhost', db_user, db_pass, db_name)
c = db.cursor()
statement = "
select a.email_address
, c.hits
, c.activity_date
, c.activity_type
from email_addresses a
, campaign_log c
, email_addr_bean_rel r
where c.target_id = r.bean_id
and r.email_address_id = a.id
and c.activity_type = 'targeted'
and c.campaign_id ='%s'
"%x
c.execute(statement)
rows = c.fetchall()
问题是 SQL 查询在 MySQL shell 和 phpmyadmin 上执行,并抛出正确的值作为结果。
但是在 python shell 上
>>rows
>>()
除了 SugarCRM 版本在几周前更新外,甚至在更新后一切都工作正常。
可能是什么问题?是不是新版本有一些InnoDB表?
我被难住了。欢迎任何指导。
编辑--我复制了一条在 mysql shell 和 phpmyadmin 窗口上都能正确执行的 SQL 查询语句,并运行它,结果是相同的。它显示一个空元组,并且没有可用的 SQL 记录。
我确信问题不是因为传递字符串,因为这似乎是每个人都建议的方向。
最佳答案
如果您的 SQL 查询需要参数“c.campaign_id ='%s'”,则应在“c.execute(statement)”中指定,例如:
c.execute(statement, (42))
关于python - Mysql-Python 复杂查询导致空集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30400833/