繁体   English   中英

Python REPLACE 到 Azure SQL 数据库

[英]Python REPLACE into Azure SQL database

我正在研究一种自动更新 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)")

从上面的评论来看,您似乎正在使用基于 Microsoft SQL Server( T-SQL标准)的Azure SQL 数据库 T-SQL 没有任何REPLACE INTOMySQL 您可以改用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/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM