Как написать connection_object для pandas.DataFrame, чтобы создать таблицу в SQL - PullRequest
0 голосов
/ 05 ноября 2018

Я пытаюсь преобразовать CSV-файл (состоящий из 40 заголовков и 4000 строк) в таблицу на сервере базы данных sql. Я где-то читал, что я могу сделать это в 2 строки так просто, как:

df = pandas.read_csv("file.csv")
df.to_sql(tableName, conn)

Я попытался сделать conn следующим образом:

conn = pyodbc.connect('DRIVER={ODBC Driver 13 for SQL Server}; SERVER=servername; DATABASE=testdb; Trusted_Connection=yes')

но это не удалось, и я получаю эти ошибки:

DatabaseError: Ошибка при выполнении sql 'ВЫБРАТЬ имя ИЗ sqlite_master WHERE тип =' таблица 'И имя = ?;': ('42S02', "[42S02] [Microsoft] [Драйвер ODBC 13 для SQL Server] [SQL Server ] Неверное имя объекта «sqlite_master». (208) (SQLExecDirectW); [42S02] [Microsoft] [Драйвер ODBC 13 для SQL Server] [SQL Server] Оператор (ы) не может быть подготовлен. (8180) ")

По-видимому, я не определил правильно conn. Но я не знаю, как это исправить.

1 Ответ

0 голосов
/ 05 ноября 2018

Как отмечено в документации DataFrame.to_sql , вторым аргументом (con) является "sqlalchemy.engine.Engine or sqlite3.Connection":

Использование SQLAlchemy позволяет использовать любую БД, поддерживаемую этой библиотекой. Для объектов sqlite3.Connection предоставляется устаревшая поддержка.

Так что вам нужно добавить SQLAlchemy в ваш проект, используйте его метод create_engine для создания объекта механизма, который указывает на вашу базу данных, например,

from sqlalchemy import create_engine
# ...
your_sql_engine = create_engine('mssql+pyodbc://@your_DSN_name')

и затем передайте your_sql_engine в качестве второго аргумента методу pandas to_sql.

...