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

python: how to query multiple mysql databases using pandas.read_sql_query

如上所述,我需要使用 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 语法错误。你知道如何处理它或指出错误吗?

非常感谢

您的问题出在您的 my_query.sql 文件上。

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

以上内容无效SQL;子选择只能 return 单列。为此,您需要在 FROM 子句中加入两个子选择。您在哪些列上执行此操作将完全取决于您的模式和所需的关系。

更新:

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

也就是说你的游标对象不能在这里使用use关键字。您需要为每个要连接的数据库创建一个新的连接和游标对象。