【问题标题】:Python mysql connector with multiple statements具有多个语句的 Python mysql 连接器
【发布时间】:2018-07-26 16:25:09
【问题描述】:

我正在尝试通过 mysql.connector 运行 SQL 查询,该查询需要 SET 命令才能查询特定表:

import mysql.connector
import pandas as pd   

cnx = mysql.connector.connect(host=ip,
                              port=port,
                              user=user,
                              passwd=pwd,
                              database="")
sql="""SET variable='Test'; 
       SELECT * FROM table  """

df = pd.read_sql(sql, cnx)

当我运行它时,我收到错误“执行多个语句时使用 multi=True”。但是我在哪里放 multi=True 呢?

【问题讨论】:

  • 可能是 pd.read_sql?这似乎是会引发此错误的行。

标签: python mysql pandas


【解决方案1】:

将参数作为字典传递给params 参数应该可以解决问题,文档here

pd.read_sql(sql, cnx, params={'multi': True}) 

参数被传递到底层数据库驱动程序。

【讨论】:

  • 感谢您的帮助。即使按照您的建议传递参数,我也会遇到同样的错误
【解决方案2】:

经过数小时的试验,我想出了如何做到这一点。如果这不是最简洁的方法,请原谅我,但我能想到的最好的方法-

import mysql.connector
import pandas as pd   

cnx = mysql.connector.connect(host=ip,
                              port=port,
                              user=user,
                              passwd=pwd,
                              database="")
sql1="SET variable='Test';" 

sql2="""SELECT * FROM table  """

cursor=cnx.cursor()
cursor.execute(sql1)
cursor.close()

df = pd.read_sql(sql2, cnx)

【讨论】:

    猜你喜欢
    • 2012-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-18
    • 2015-11-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多