Как сформировать DataFrame на основе выгрузки данных из таблицы БД?

Нужно получить DataFrame на основе выгрузки данных из таблицы БД.

Полнота данных DataFrame, структура и названия столбцов должны соответствовать таблице в БД.


Ответы (2 шт):

Автор решения: mr.polden2010

Если использовать библиотеку mariadb

import pandas as pd
import mariadb

Формируем соединение и курсор:

try:
    conn = mariadb.connect(
            user = 'USERNAME',
            password = 'PASSWORD',
            host = 'HOST', # 'localhost' или 'db' и т.п. зависит от настройки БД
            port = 3306)

    cur = conn.cursor()
except mariadb.Error as e:
    print(f"Error connecting to MariaDB Platform: {e}")

Добавляем запрос в курсор

cur.execute('select * from myshema.mytable')

Выбираем все данные в объект lst:

lst = cur.fetchall()

Формируем DataFrame, одновременно именуем столбцы:

df = pd.DataFrame(lst, columns=[c[0] for c in cur.description])

Закрываем соединение с БД:

conn.close()
→ Ссылка
Автор решения: MaxU

Pandas умеет читать данные в DataFrame напрямую из таблиц БД если использовать SQL Alchemy:

import pandas as pd
from sqlalchemy import create_engine

engine = create_engine("mysql+pymsql://user:pass@some_mariadb/dbname?charset=utf8mb4")

df = pd.read_sql("select * from myshema.mytable", engine)

Можно использовать драйвер MariaDB, но в отличие от первого варианта, который будет работать и для MySQL и для MariaDB, вариант ниже будет работать только для MariaDB:

engine = create_engine("mariadb+pymsql://user:pass@some_mariadb/dbname?charset=utf8mb4")

NOTE:

The above engine, upon first connect, will raise an error if the server version detection detects that the backing database is not MariaDB.

→ Ссылка