Mysql-Python 复杂查询导致空集
Mysql-Python complex query resulting in empty set
我们有一个脚本,在过去 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 版本,甚至在 post 更新之后一切都运行良好。
可能是什么问题?是不是新版本有一些InnoDB表?
我很难过。欢迎任何指导。
编辑——我复制了一个 SQL 查询语句,它在 mysql shell 以及 phpmyadmin window 和 运行 上都正确执行它,和结果是一样的。它显示一个空元组,没有 SQL 条记录可用。
我确定问题不是因为传递字符串,因为这似乎是每个人都建议的方向。
如果您的 SQL 查询需要一个参数 "c.campaign_id ='%s'",您应该在 "c.execute(statement)" 中指定它,例如:
c.execute(statement, (42))
我想通了这个问题。我升级了python-MySql版本到最新。它至少设法告诉我其中一个 MySQL 表有错误。
已修复 MySQL Table,一切正常。
对于遇到类似问题的任何人,建议使用 pip 安装最新的 MySQL-python。确保在 pip 安装之前安装。
sudo apt-get install libmysqlclient-dev python-dev
我们有一个脚本,在过去 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 版本,甚至在 post 更新之后一切都运行良好。
可能是什么问题?是不是新版本有一些InnoDB表?
我很难过。欢迎任何指导。
编辑——我复制了一个 SQL 查询语句,它在 mysql shell 以及 phpmyadmin window 和 运行 上都正确执行它,和结果是一样的。它显示一个空元组,没有 SQL 条记录可用。
我确定问题不是因为传递字符串,因为这似乎是每个人都建议的方向。
如果您的 SQL 查询需要一个参数 "c.campaign_id ='%s'",您应该在 "c.execute(statement)" 中指定它,例如:
c.execute(statement, (42))
我想通了这个问题。我升级了python-MySql版本到最新。它至少设法告诉我其中一个 MySQL 表有错误。 已修复 MySQL Table,一切正常。
对于遇到类似问题的任何人,建议使用 pip 安装最新的 MySQL-python。确保在 pip 安装之前安装。
sudo apt-get install libmysqlclient-dev python-dev