python:如何使用pandas.read_sql_query查询多个mysql数据库

时间:2018-06-12 17:28:46

标签: python pymysql

如上所述,我需要使用pandas.read_sql_query查询具有所有相同模式的多个数据库。我试图在所有dbs上创建循环并在运行中运行sql语句,这将导致类似这样的事情:

USE db_test_1; SELECT * from test

到目前为止我所做的事情:

cursor = conn.cursor()
cursor.execute("SHOW DATABASES LIKE '%test_%'")
cursor.close()
dbs = [v.replace("'", "") for (v, ) in cursor]

for db in dbs[:100]:
    temp = "USE " + db + ";"
    fd = open('my_query.sql')
    query = fd.read()
    fd.close
    sql = temp + query
    data = pd.read_sql_query(sql, conn)
    print(data)

给出一个错误,指出mysql语法错误。您是否知道如何处理它或指出错误?

非常感谢

1 个答案:

答案 0 :(得分:0)

您的my_query.sql文件存在问题。

SELECT (SELECT * from tab1), (SELECT * from tab2)

以上是无效的SQL;子选择只能返回单个列。为此,您需要加入FROM子句中的两个子选择。您执行此操作的列将完全取决于您的架构和所需的关系。

<强>更新

好的,所以这里的问题似乎更多地是关于你如何处理查询。您的游标对象连接到单个数据库。不是整个数据库服务器。

这意味着您的光标对象无法在此处使用use关键字。您需要为要连接的每个数据库创建新的连接和游标对象。