Читать таблицы SQL в Python

0

У меня есть .sql файл, который я просто хочу прочитать в блоке данных Pandas в Jupyter Notebook. С CSV файлами мне просто нужно было загрузить файл и создать фреймворк, используя что-то вроде этого:

df = pd.read_csv('file.csv')

Я понимаю, что мой SQL файл должен обслуживаться с использованием приложения базы данных, такого как MySQL. Возможно, существует какой-то способ локального .sql файла .sql? Мне не нужно делать какие-либо манипуляции с базой данных - я просто хочу прочитать значения таблиц.

  • 0
    Разве ваш файл .sql не является просто текстовым файлом, содержащим ваши запросы MySQL? Если так, почему вы не можете сохранить его локально?
Теги:
data-science
jupyter-notebook

3 ответа

0

Я думаю, вы должны работать с этой веб-ссылкой, которая будет непосредственно принимать sql-дамп и создает csv, а затем загружать его
http://www.convertcsv.com/sql-to-csv.htm

или вы можете использовать

подпроцесс импорта

proc = subprocess.Popen(["mysql", "--user=%s" % USER, "--password=%s" % PASS, "database"],
                        stdin=subprocess.PIPE,
                        stdout=subprocess.PIPE)
out, err = proc.communicate(file("/tmp/dump.sql").read())
0

Я предполагаю, что вы пытаетесь импортировать таблицу в pandas только из файла.sql без подключения к SQL-серверам или с использованием каких-либо SQL-серверов. Но.sql файлы просто содержат некоторые запросы или даже если вы экспортировали таблицу в.sql файл, для чтения в базу данных pandas потребуется активное соединение с базой данных. Вы можете просмотреть все функции pandas для чтения или записи SQL в IO Tools и заметить, что для всех доступных функций требуется активное соединение.

0
import pandas as pd
import pyodbc
from sqlalchemy import create_engine
engine = create_engine('mysql+pyodbc://<username>:<password>@<server>:<port>/<db_name>?driver=<driver_name>')
with open('Path/to/xxx.sql', 'r') as sql_file:
    query = sql_file.read()
df = pd.read_sql(query, con=cnxn)

вся информация в <> относится к вашей настройке

  • 0
    @ Индоминус - ты сделал мой день. Мне просто не хватало порта в строке подключения. и наконец решил это. :-)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню