2017-10-18 9 views
2

エクセルのスプレッドシートからDBを作成しようとしています。私は以下のコードを持って、問題は私のコードを実行するときに私のデータベースは、各列のテーブルを作成します。ワークブックにリストされている各スプレッドシートの表を作成したいと思います。シート名はsheet1とsheet2です。python sqlite3 excelからDBを作成する

import sqlite3 
import pandas as pd 
filename="script" 
con=sqlite3.connect(filename+".db") 
wb=pd.read_excel(filename+'.xlsx',sheetname='sheet1') 
for sheet in wb: 
wb[sheet].to_sql(sheet,con, index=False) 
con.commit() 
con.close() 
+0

'sheetname = 'sheet1''を使用してシートをロードしています。シート名= None'を使用してそれらをすべて読み込み、ループします。 –

+0

私はもともとsheetname = noneを試しましたが、トレースバックを取得しました。 NameError:name' none 'は定義されていません – springcj1

答えて

2

sheetname=Noneを渡すと、あなたはそれ以上のデータフレーム、あなたは、ループのようにシート名のキーと値を持つOrderedDictを与えるだろう。

import pandas as pd 
import sqlite3 

db = sqlite3.connect(':memory:') 
dfs = pd.read_excel('somefile.xlsx', sheetname=None) 
for table, df in dfs.items(): 
    df.to_sql(table, db) 
+0

渡していただきありがとうございますsheetname =何も私が探していたものではありません。私はもともとそれを試みたが、私が助けに感謝する "なし"ルーキーミスの代わりに "なし"を渡していたので、ハングアップしました! – springcj1

0
import sqlite3 
import pandas as pd 
filename="script" 
con=sqlite3.connect(filename+".db") 
wb=pd.ExcelFile(filename+'.xlsx') 
for sheet in wb.sheet_names: 
     df=pd.read_excel(filename+'.xlsx',sheetname=sheet) 
     df.to_sql(sheet,con, index=False,if_exists="replace") 
con.commit() 
con.close() 

最初sheetnamesを取得して、シートを読み、上記のようSQLiteのために書きます。

関連する問題