Вставка Pandas Framework в SQL Server с колонкой Auto_Increment - PullRequest
1 голос
/ 03 мая 2019

Я пытаюсь прочитать файл Excel и добавить (вставить) данные в существующую таблицу SQL (Azure DB). Таблица имеет поле auto_increment, которое обрабатывается SQL и не хочет прикасаться. Я пытаюсь вставить значения, используя это https://pandas.pydata.org/pandas-docs/version/0.23.4/io.html#sql-queries но это порождает ошибки.

Я могу запросить данные, но не могу вставить. Вот мой код и ошибка

SQL Table: Hello
aID Int auto_increment
Col1 Int
Col2 String

import pandas as pd
import sqlalchemy
import datetime
import urllib
from sqlalchemy import create_engine

params = urllib.parse.quote_plus("DRIVER={ODBC Driver 17 for SQL Server};serverinformation;database;username;passwrod)
engine = create_engine("mssql+pyodbc:///?odbc_connect=%s" % params)
print('connected')

path = r'excel_file'
df= pd.read_excel(path)
//Excel file has same columns as SQL table except aID which auto_increment

    enter code here

print(df.info())
df.to_sql(
    name='Hello',  # database table name
    con=engine,
    schema= '[dbo]', 
    if_exists='append',
    index = False
)


Getting following error

sqlalchemy.exc.ProgrammingError: (pyodbc.ProgrammingError) ('42S01', "[42S01] [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]There is already an object named 'Hello' in the database. (2714) (SQLExecDirectW)"



  // and it tries to create the DB table

(Background on this error at: http://sqlalche.me/e/f405)

I want to know what i am doing wrong and where? Cannot seem to find the solution

Редактировать: Решение

Мой метод был написать, это была ошибка, я не правильно ее прочитал. Если у вас есть несколько схем, чем явно указать схему, которую вы хотите загрузить данные в таблицу. Еще раз проверьте ваш df и убедитесь, что он совпадает со столбцами таблицы.

1 Ответ

0 голосов
/ 03 мая 2019

Для дальнейшего использования не следует явно вызывать схему.

df.to_sql(
name='Hello',  # database table name
con=engine,
if_exists='append',
index = False
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...