2017-10-11 16 views
0

これは私が答えを見つけることができなかったという簡単な質問です。私は2つのコマンドを持つ.SQLファイルを持っています。私はPandasにこれらのコマンドの結果をDataFrameにプルしてもらいたいと思います。外部SQLファイルをPandasデータフレームに読み込む

SQLファイルのコマンドはそのままで、今日の日付を使用するクエリが長くなります。私はまたき

「「NoneType」オブジェクトが反復可能ではありません」私の接続(prod_dbの)を確立した後、次のようにread_sqlを使用すると、エラーメッセージを取得するために
sqlpath = 'path.sql' 
scriptFile = open(sqlpath,'r') 
script = scriptFile.read() 
df = pd.read_sql(script,prod_db) 

をしようとしました

SET @todaydate = DATE(NOW()); 
SELECT ...long query....; 

関数reading external sql script in pythonで説明されている関数とアプローチを使用しようとしましたが、結果をパンダのデータフレームに取得する方法がわかりません。私は 'Command Skipped'を繰り返して得たので、結果を読み取っているようには見えません。

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

私はあなたに適した解決策を用意しています。それはあなたに素敵な少しpandas.DataFrameを与える必要があります。

まず、SQLファイル内のクエリを読み取る必要があります。それからちょうど私はあなたがそれを知っている確信しているが、ここでは関数のドキュメントがあるpd.read_sql_query()代わりのpd.read_sql()

を使用します。http://pandas.pydata.org/pandas-docs/version/0.20/generated/pandas.read_sql_query.html#pandas.read_sql_query

# Read the sql file 
query = open('filename.sql', 'r') 

# connection == the connection to your database, in your case prob_db 
DF = pd.read_sql_query(query.read(),connection) 

私はそれがT-SQLで作業していることを保証することができますが、私はMySQLでそれを使ったことはありません。

関連する問題