python - Mysql-Python 复杂查询导致空集

标签 python mysql innodb

我们的脚本在过去 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/

相关文章:

mysql - SQL - 搜索表记录中不存在的日期时间段

php - 将IP存入mysql数据库

MySQL/InnoDB : more optimal to have two non-unique index columns or combine them in unique primary key?

mysql - 重叠的多列索引

python - 在Python 2.7中查询希伯来语的oracle

python - 无法通过自定义 cloudformation 资源调用 lambda 函数

python - 如何仅将新索引附加到具有 HDFS 存储的表

MySQL - 不显示 ID 使用的任何行

python - 如果可能,Pandas 将字符串转换为数字;否则保留字符串值

MySQL 在检查 = 1 时不使用索引,而是将其与 = 0 一起使用