Использование ядра базы данных Flask_sqlAlchemy Cross в Pandas.read_sql - PullRequest
0 голосов
/ 12 июня 2018

Уважаемые,

Я хотел бы выполнить sql запросы и получить результаты в pandas DF.БД - sqlite3, с использованием flask_sqlalchemy

Я получил 3 базы данных, которые привязаны к приложению sqlalchemy, модели создаются с помощью ключевого слова bind.Здесь не проблема, таблицы хорошо создаются в каждом файле базы данных.

Однако, при условии, что у меня есть 3 БД (DB1, DB2, DB3) и одна таблица в каждой БД (T1, T2, T3)

DB по умолчанию - DB1, DB2 и DB3 - это привязки DB1

Я хочу выполнить этот код (запрос sql глуп, это только для примера):

    sql = "select T2.ID, sum(T3.val) as val
    FROM T2 INNER JOIN T3 ON T2.ID = T3.ID
    GROUP BY T2.ID"

    df = pd.read_sql(sql, con)

Проблема здесь в следующем: con...

Я видел много примеров переключения с одного механизма на другой, используя con = db.get_engine(bind='***')

, но это предполагает, что T2 и T3 находятся в одной базе данных,что не так

здесь я получил 2 таблицы в 2 базах данных, так как я могу установить соединение с пандами?

Thks

Примечание: в реальной системе некоторыебазы данных содержат сотни миллионов строк, поэтому использование SQL, а затем pandas - наиболее эффективный способ с точки зрения производительности, а не использование объектов sqlalchemy, таких как query, filter, ...

1 Ответ

0 голосов
/ 12 июня 2018

Я не эксперт в sqlite, но в Mysql или Postgresql вы можете получить доступ к таблицам по базам данных / схемам, указав имя базы данных в вашем запросе.Попробуйте:

sql = "select T2.ID, sum(T3.val) as val
       FROM DB2.T2 
       INNER JOIN DB3.T3 ON T2.ID = T3.ID
       GROUP BY T2.ID"
...