#python #sql #replace #azure-sql-database
#python #sql #заменить #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)")
Комментарии:
1.
REPLACE INTO
это синтаксис MySQL. Вы используете MySQL или MSSQL? Даже для MySQL синтаксис должен бытьREPLACE INTO
, а неSELECT REPLACE INTO
!2. Я использую базу данных SQL в среде Azure. ЗАМЕНА В выдает мне много ошибок, не могли бы вы написать весь запрос? может быть, я вижу, где я ошибаюсь. Заранее большое вам спасибо!
3. опубликовано в качестве ответа.
Ответ №1:
Из приведенного выше комментария следует, что вы используете базу данных Azure SQL, которая основана на Microsoft SQL Server (стандарт T-SQL). В T-SQL нет ничего REPLACE INTO
подобного MySQL. Вместо этого вы можете использовать слияние для тех же целей, что и ЗАМЕНА.
Обычным сценарием является обновление одного или нескольких столбцов в таблице, если существует соответствующая строка. Или вставка данных в виде новой строки, если соответствующая строка не существует.
Пример (используйте таблицу и столбец в соответствии с вашим сценарием):
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 /