Создание pandas списка фреймов данных из MySQL таблиц в python - PullRequest
0 голосов
/ 06 апреля 2020

У меня есть MySQL, который мы можем вызвать MySever, если на этом сервере есть сотни баз данных, мы можем вызвать базы данных: database1, database2, database3… database100. Каждая база данных имеет таблицу с именем tablepull. Я пытаюсь получить каждую таблицу в каждой базе данных, называемую «tablepull», и сохранить таблицу в списке python, таблица «tablepull» имеет одинаковые заголовки для каждой базы данных и может быть сохранена как кадр данных в * 1014. *.

Вот определяемые переменные:

from sqlalchemy import create_engine
import pandas as pd

UserName = MyUserName
Password = MyPassword
Server = MyServer
Databases = [‘database1’, ‘database2’, ‘database3’,… ‘database100’]
Table = tablepull

Я могу легко получить одну таблицу базы данных, используя этот синтаксис:

engine = create_engine(mssql:// UserName: Password@Server/Table?driver=SQL Server Native Client 11.0')
connection = engine.connect()
cnxn = connection.connection
#Read in data into from sql table#
raw_data = pd.read_sql(sql = """SELECT * FROM Table""", con = cnxn)

Цель состоит в том, чтобы иметь возможность переберите все базы данных, возьмите нужную таблицу (tablepull) для каждой базы данных и сохраните в список. Любая помощь или руководство будет принята с благодарностью.

Спасибо

1 Ответ

1 голос
/ 06 апреля 2020

Вы можете подключиться к нескольким базам данных, если они находятся на одном сервере, не указав имя базы данных в команде connect.

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

db_list = ['db1', 'db2', ... 'db100']
df_dict = {}

for c, db in enumerate(db_list):
    sql = """SELECT * FROM {}.Table"""
    df_dict[c] = pd.read_sql_query(sql.format(db), engine)        

Наконец вы получите dictionary со всеми кадрами данных.

Это должно помочь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...