2017-01-22 3 views
1

私はループスルーして私に3つの別のdataframeオブジェクトを返す関数を持っています。pandas/sqlalchemyを使用して.dbファイルに複数のテーブルを作成する方法

どのようにこれらの3つのdataframeオブジェクトを1つの.dbファイルに3つの別々のtablesファイルに入れますか?

以下のコードは、私が現在使っているコードです。それは私が持っているアイテムのそれぞれをループして、必要な作業をして、私がそれに続いてDataframeオブジェクトをSQLに置くことを返します。

for each_item in items: 
    engine = create_engine("sqlite:///" + my_variable_database_name + ".db", echo=False) 
    connection = engine.connect() 
    pandas.DataFrame.to_sql(my_function(each_item), each_item, con=engine, if_exists="replace") 
    connection.close() 
    print(each_item + " has been completed successfully.") 
print("All completed.") 

どうすればよいですか?

+0

ここで問題は何ですか?データベースへの 'to_sql'エクスポートでmy_functionのデータフレームを返すアイテムをループしていませんか? – Parfait

+0

はい、3つの別々の '.db'ファイルが作成され、それぞれに1つのテーブルがあります。私は3つのテーブルの中に1つの '.db'ファイルを作りたいと思います。 –

+0

ここで3 dbsの出力はどのようにしますか?データベースの名前は何ですか?明らかに同じものを共有することはできません。 * my_variable_database_name *はどのようにループ内で変更されますか?この投稿されたコードは実際のものと一致しますか? – Parfait

答えて

0

私は間違っていることを理解しています。基本的に私は自分のコードを再構成しなければなりませんでした。私が以前に行ったことは、engineをループに入れ、特定のデータベースの代わりにeach_itemという名前を設定することでした。

engine = create_engine("sqlite:///mydatabase.db", echo=False) 

for each_item in items: 
    connection = engine.connect() 
    pandas.DataFrame.to_sql(my_function(each_item), name=each_item, con=engine, if_exists="replace") 
    connection.close() 
    print(each_item + " has been completed successfully.") 
print("All completed.") 
+1

また、反復処理が必要ないので、接続のオープンとクローズを外側に移動します。 – Parfait

+0

ありがとう@パフェット。それは理にかなっている –

関連する問題