1

我有一个 Python 脚本,它从用户那里获取一个名称列表,创建一个 SQL 查询字符串,然后查询数据库并将数据放入使用pandas.read_sql()方法的数据框中。但是,我注意到如果我要查询的人的列表非常长,我的代码永远不会到达后面的行pandas.read_sql(),并且由于某种原因,没有捕获到异常。

我的查询字符串如下所示:

SELECT * FROM table1 WHERE 
table1.name = 'Alice' OR
table1.name = 'Bob' OR
table1.name = 'Charlie' OR ...

其中可能包含数百个名称。

我使用的 Python 代码如下所示:

query_string = construct_string_above(names_list)
pymongoConnection = ... 

try:
    print("Trying")
    df = pandas.read_sql(query_string, pymongoConnection)
except Exception as ex:
    print(ex)
    traceback.print_exc()
    sys.exit(0)

print("Finishing")

我的代码总是执行到 try 块。该程序打印“尝试”,但从不打印“完成”,也不会返回任何错误。我检查了,pymongoConnection对象是正确的。我还尝试query_string在 MySQL 中手动执行它,它可以工作。

问题一定出在pandas.read_sql()甚至这里,只有当查询字符串的大小超过某个阈值时才会出现问题,否则代码会正确完成。是否有使用限制pandas.read_sql(),例如输入字符串的最大大小或最大WHERE子句或返回数据帧的最大数据量?因为我想不出任何其他可能导致问题的东西。

4

0 回答 0