Чтобы преобразовать результат SQL-запроса во фрейм данных pandas, вы можете использовать функцию read_sql_query() из pandas.
Функция read_sql_query() возвращает DataFrame, соответствующий результирующему набору строки запроса. При необходимости укажите параметр index_col, чтобы использовать один из столбцов в качестве индекса; в противном случае будет использоваться целочисленный индекс по умолчанию.
Шаги по преобразованию SQL в DataFrame в Pandas
Для этого вам необходимо установить соединение с вашей базой данных, используя такую библиотеку, как sqlite3, MySQLdb или psycopg2, в зависимости от типа базы данных, с которой вы работаете.
Шаг 1: создайте базу данных MySQL и таблицу
Есть много способов сделать это, но мы остановимся на самом коротком. Я использую сервер MAMP, поэтому там есть phpmyadmin. Теперь по умолчанию уже создан один пользователь с именем root.
Итак, имя пользователя и пароль для этого пользователя — root и root. Я уже создал базу данных с именем laravel7crud и таблицу под названием coronas и вставил две строки.
Моя финальная таблица выглядит следующим образом.

Теперь мы прочитаем запрос SELECT, который извлекает все две строки, и преобразуем эти данные SQL в DataFrame.
Шаг 2: импортируйте Pandas и pymysql
Мы используем пакет pymysql для подключения Python к базе данных MySQL. Итак, вам нужно установить пакет pymysql.
Также необходимо установить пакет Pandas. Если вы не установили его, введите следующую команду.
|
1 |
python3 -m pip install pandas |
Моя версия по умолчанию — Python 3.8. Итак, в приведенной выше команде я использую python3.
|
1 2 |
python --version Python 3.8.2 |
Теперь создайте файл программирования Python с именем app.py и импортируйте пакеты.
|
1 2 3 |
import pymysql import pandas as pd |
Шаг 3: подключите Python к MySQL с помощью connect()
PyMySQL — это клиентская библиотека MySQL на чистом Python, основанная на PEP 249. Большинство общедоступных API-интерфейсов совместимы с mysqlclient и MySQLdb. Кроме того, PyMySQL работает с MySQL 5.5+ и MariaDB 5.5+.
Функция pymysql.connect() принимает следующие четыре параметра.
- Hostname
- Username
- Password
- Database
См. следующий код.
|
1 2 3 4 |
import pymysql import pandas as pd dbcon = pymysql.connect("localhost", "root", "root", "laravel7crud") |
Шаг 4: прочтите SQL-запрос
Функция pd.read_sql_query() принимает параметр SQL Query и объект подключения. В нашем случае это оператор SQL SELECT и объект dbcon.
|
1 2 3 4 5 6 7 8 9 10 11 12 |
import pymysql import pandas as pd dbcon = pymysql.connect("localhost", "root", "root", "laravel7crud") try: SQL_Query = pd.read_sql_query( '''select symptoms, country_name, cases from coronas''', dbcon) |
Шаг 5: преобразуйте переменную в DataFrame, используя pd.DataFrame()
Pandas DataFrame — это двумерные, изменяемые по размеру, потенциально гетерогенные табличные данные. Структура данных также содержит помеченные оси (строки и столбцы). Арифметические операции выравниваются по меткам строк и столбцов.
|
1 2 3 4 |
df = pd.DataFrame(SQL_Query, columns=['symptoms', 'country_name', 'cases']) print(df) print(type(df)) |
DataFrame принимает два параметра:
- SQL Query Data
- Columns: мы назвали их так же, как имена столбцов таблицы SQL.
Затем мы напечатали DataFrame и его тип данных.
Итак, наш окончательный код выглядит так, как показано ниже.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
import pymysql import pandas as pd dbcon = pymysql.connect("localhost", "root", "root", "laravel7crud") try: SQL_Query = pd.read_sql_query( '''select symptoms, country_name, cases from coronas''', dbcon) df = pd.DataFrame(SQL_Query, columns=['symptoms', 'country_name', 'cases']) print(df) print('The data type of df is: ', type(df)) except: print("Error: unable to convert the data") dbcon.close() |
Выход
|
1 2 3 4 5 |
symptoms country_name cases 0 Fever India 29000 1 Cough USA 3000000 The data type of df is: <class 'pandas.core.frame.DataFrame'> |
Из вывода видно, что мы успешно преобразовали SQL в Pandas DataFrame.
