从DataFrame插入时获取身份密钥

时间:2019-03-29 03:32:14

标签: pandas dataframe sql-server-2014

假设我在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 :(得分:-1)

要取回数据...。您只需要查询表。

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