2015-10-02 5 views
0

У меня есть база данных, которая содержит несколько таблиц, и я пытаюсь импортировать каждую таблицу в качестве фреймворка pandas. Я могу это сделать для одной таблицы следующим образом:Импортирование нескольких таблиц SQL с использованием 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) 

Количество таблиц в базе данных будет меняться, и в любое время, я хотел бы иметь возможность импортировать каждую таблицу в своей собственной dataframe. Как я могу получить все эти таблицы в пандах?

ответ

2

В зависимости от вашего SQL-сервера вы можете проверять таблицы в базе данных.

Например:

tables_df = pd.read_sql('SELECT table_name FROM database_name', conn) 

Теперь ваши имена таблиц доступны в виде рамки панды данных, вам просто нужно разобрать его:

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 содержит все dataframes с table_name как ключ

+0

Это хорошо работает, спасибо! – petercj

Смежные вопросы