Python替换为Azure SQL数据库

2024-04-26 00:16:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在研究一种自动更新Azure数据库的方法。 我的第一个版本是使用INSERT命令,但现在我想要一个更可靠的SELECT REPLACE命令。 以下一行:

cursor.execute("SELECT REPLACE INTO [dbo].[PPC_TPEX_TEST]([Enter],[Leave],[StartTime],[EndTime],[Area], [Camera]) values(?,?,?,?,?,?)",
                    row['entry'], row['exit'], row['Start'], row['End'], row['Area'], row['Camera'])

仅发生以下错误:

cursor.execute("SELECT REPLACE INTO [dbo].[PPC_TPEX_TEST]([Enter],[Leave],[StartTime],[EndTime],[Area], [Camera]) values(?,?,?,?,?,?)",pyodbc.ProgrammingError: ('42000', "[42000] [Microsoft][ODBC Driver 13 for SQL Server][SQL Server]Incorrect syntax near 'Enter'. (102) (SQLExecDirectW); [42000] [Microsoft][ODBC Driver 13 for SQL Server][SQL Server]Statement(s) could not be prepared. (8180)")

Tags: 命令executesqlserverareaselectcursorreplace
1条回答
网友
1楼 · 发布于 2024-04-26 00:16:25

从上面的评论中,您似乎正在使用基于Microsoft SQL Server(T-SQL标准)的Azure SQL database。T-SQL没有任何类似于MySQLREPLACE INTO。您可以改用MERGE,以达到与REPLACE相同的目的

一个常见的场景是,如果存在匹配的行,则更新表中的一个或多个列。或者,如果不存在匹配行,则将数据作为新行插入

示例(根据您的场景使用表和列):

MERGE dbo.Table1 AS target  
    USING (SELECT @id, @Name) AS source (Id, Name)  
    ON (target.Id= source.Id)  
    WHEN MATCHED THEN
        UPDATE SET Name = source.Name  
    WHEN NOT MATCHED THEN  
        INSERT (Id, Name)  
        VALUES (source.Id, source.Name) 

如果你想特别使用MySQL,它在Azure中也可以作为不同的服务提供https://azure.microsoft.com/services/mysql/

相关问题 更多 >

    热门问题