这是一个简单的问题,我还没能找到答案。我有一个带有两个命令的.SQL文件。我想让Pandas将这些命令的结果拉到DataFrame中。
SQL文件的命令也是如此,较长的查询使用今天的日期。
SET @todaydate = DATE(NOW());
SELECT ...long query....;
在建立连接(prod_db)后,我尝试以以下方式使用read_sql,并获得错误消息“NoneType”对象不可迭代
sqlpath = 'path.sql'
scriptFile = open(sqlpath,'r')
script = scriptFile.read()
df = pd.read_sql(script,prod_db)
我也尝试过使用这里描述的函数和方法reading external sql script in python,但我不确定如何将结果导入pandas Dataframe (或者我可能遗漏了什么)。它似乎没有阅读结果,因为我得到'命令跳过'反复。
def executeScriptsFromFile(filename):
fd = open(filename, 'r')
sqlFile = fd.read()
fd.close()
# all SQL commands (split on ';')
sqlCommands = sqlFile.split(';')
# Execute every command from the input file
for command in sqlCommands:
try:
c.execute(command)
except OperationalError, msg:
print "Command skipped: ", msg
df = executescriptsfromfile(sqlpath)
2条答案
按热度按时间vvppvyoh1#
我有一个解决方案可能对你有用。它应该给予你一个漂亮的小
pandas.DataFrame
。首先,必须读取sql文件中的查询。那么就使用
pd.read_sql_query()
而不是pd.read_sql()
我相信你知道,但这是函数的文件。
我可以向你保证,它是与T-SQL,但我从来没有使用它与MySQL。
tag5nh1u2#
这是它如何为我工作的MWE:
希望这能帮上忙。