Python 使用df.to_sql(如果_存在=';追加';)和sqlalchemy在sql Server表中向上插入

Python 使用df.to_sql(如果_存在=';追加';)和sqlalchemy在sql Server表中向上插入,python,sql-server,dataframe,orm,upsert,Python,Sql Server,Dataframe,Orm,Upsert,我正在尝试使用sqlalchemy将数据帧插入到SQL Server表中。我一直在使用df.to\u sql(如果存在class='append')方法,认为它的行为类似于UPSERT,但现在我意识到情况并非如此 实际情况是,“append”只能添加到现有表中,但如果表中已有行,则无法更新单个行。我真的试图避免在数据帧中循环,但看起来这是唯一可以在这里工作的方法,除非我可能误解了ORM中的某些内容 这是我的表格定义。我正在使用SQL Server: CREATE TABLE [dbo].[PRO

我正在尝试使用sqlalchemy将数据帧插入到SQL Server表中。我一直在使用
df.to\u sql(如果存在class='append')
方法,认为它的行为类似于UPSERT,但现在我意识到情况并非如此

实际情况是,“append”只能添加到现有表中,但如果表中已有行,则无法更新单个行。我真的试图避免在数据帧中循环,但看起来这是唯一可以在这里工作的方法,除非我可能误解了ORM中的某些内容

这是我的表格定义。我正在使用SQL Server:

CREATE TABLE [dbo].[PRODSYNTHESIS_NN]
(
    [Project_id] [int] NOT NULL,
    [Project_name] [nvarchar](30) NOT NULL,
    [Date_results] [datetime] NOT NULL,
    [P_injecte] [real] NULL,
    [P_soutire] [real] NULL,
    [Q_injecte] [real] NULL,
    [Q_soutire] [real] NULL,
    [Zone] [nvarchar](2) NULL,

    CONSTRAINT [PK_PRODSYNTHESIS] 
        PRIMARY KEY CLUSTERED ([Project_id] ASC,
                               [Project_name] ASC,
                               [Date_results] ASC)
)
错误是:

sqlalchemy.exc.IntegrityError:(pyodbc.IntegrityError)('23000',“[23000][Microsoft][SQL Server原生客户端11.0][SQL Server]违反主键约束'PK_PRODSYNTHESIS'。无法在对象'dbo.PRODSYNTHESIS_NN'中插入重复的键。重复的键值为(21,BLAH,2020年6月1日上午8:00)。(2627)(SQLExecDirectW);[23000][Microsoft][SQL Server本机客户端11.0][SQL Server]语句已终止。(3621)”


这里有一个公共关系的官方图书馆有一个公共关系的官方图书馆