MysqlPython复杂查询导致空s

2024-06-16 16:28:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我们有一个剧本,在过去的4年里运行得很顺利。它从SugarCRM应用程序中提取大量数据,然后打印一些报告。在

我使用pythonmysqldb来提取数据。在

  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()

问题是在MySQL shell和phpmyadmin上执行SQL查询,并将正确的值作为结果。在

但是在pythonshell上

^{pr2}$

不过,SugarCRM的版本在几周前就已经更新了,即使是在更新后,一切都很好。在

有什么问题吗?新版本有一些InnoDB表吗?在

我被难住了。欢迎提供任何指导。在

Edit——我复制了一个在mysql shell和phpmyadmin窗口上都能正确执行的SQL查询语句,并运行它,结果是一样的。它显示一个空元组,并且没有可用的SQL记录。在

我确信这个问题并不是因为传递字符串,因为这是每个人似乎都在建议的方向。在


Tags: and数据iddbsqladdressemailtype
2条回答

我解决了这个问题。我把pythonmysql升级到最新版本。它至少设法告诉我其中一个MySQL表有错误。 修复了MySQL表,一切正常。在

对于任何面临类似问题的人,建议使用pip安装最新的MySQL python。确保在pip安装之前先安装。在

sudo apt-get install libmysqlclient-dev python-dev

如果SQL查询需要参数“c.campaign_id='%s'”,则应在“c.execute(statement)”中指定它,例如:

c.execute(statement, (42))

相关问题 更多 >