Получение идентификационного ключа при вставке из DataFrame - PullRequest
1 голос
/ 29 марта 2019

Допустим, у меня есть следующая таблица в SQL Server:

CREATE TABLE Users
(
     UserID          int IDENTITY(1,1) PRIMARY KEY
,    UserName        varchar(50)
,    InsertDate      datetime2 DEFAULT GETDATE()
)

В Python я хочу вставить в эту таблицу из DataFrame и получить обратно UserID строк, которые я только что вставил

import numpy as np
import pandas as pd
import sqlalchemy as sa

engine = sa.create_engine(...)
df = pd.DataFrame({'UserName': ['Alice', 'Bob']})
df.to_sql('Users', engine, if_exists='append', index=False)

Данные попадают в базу данных. Но как мне вернуть UserID строк, которые я только что вставил? Я подумал о написании функции-оболочки, которая сначала вставляет во временную таблицу и использует T-SQL для манипулирования данными и возврата того, что я хочу. Но есть ли более простой способ?

Примечание : Я никак не могу изменить схему таблицы. Я могу создавать только временные таблицы в базе данных.

1 Ответ

0 голосов
/ 29 марта 2019

Чтобы вернуть данные .... вам просто нужно запросить таблицу.

with engine.connect() as conn:
    df=pd.read_sql("select * from Users",conn)
...