我有一个包含多个表的数据库,我试图将每个表导入为pandas数据帧。我可以按如下方式对单个表执行此操作:
import pandas as pd
import pandas.io.sql as psql
import pypyodbc
conn = pypyodbc.connect("DRIVER={SQL Server};\
SERVER=serveraddress;\
UID=uid;\
PWD=pwd;\
DATABASE=db")
df1 = psql.read_frame('SELECT * FROM dbo.table1', conn)
数据库中的表数量会发生变化,我希望能够随时将每个表导入到自己的数据帧中。如何将所有这些表放入熊猫?
答案 0 :(得分:2)
根据您的SQL服务器,您可以检查数据库中的表。
例如:
tables_df = pd.read_sql('SELECT table_name FROM database_name', conn)
现在您的表名可以作为pandas数据框访问,您只需解析它:
table_name_list = tables_df.table_name
select_template = 'SELECT * FROM {table_name}'
frames_dict = {}
for tname in table_name_list:
query = select_template.format(table_name = tname)
frames_dict[tname] = pd.read_sql(query, conn)
您的词典frames_dict
包含table_name为键