pyodbc: ошибка при удалении записей в двух таблицах в MS SQL Server 2014 - PullRequest
0 голосов
/ 22 мая 2019

У меня есть две таблицы в MS SQL Server 2014, а именно.test1 и test2.Ниже приведены поля test1 и test2

таблица test1

     row_id  number    name        tabdate
0       5      11      First     2019-05-21
1       6      12      Second    2019-05-20
2       7      13      Third     2019-05-18
3       8      14      Fourth    2019-05-16 

таблица test2

     row_id  number    name         tabdate
0       1      18      First      2019-05-21
1       2      19      Second     2019-05-20
2       3      13      Third      2019-05-18

Я хочуdelete запись в test1 на основе row_id.В то же время я хочу delete соответствующую запись в test2 путем извлечения поля tabdate и name из test1 для выбранного row_id, а затем сопоставить их в test2.Я использую Python для этого.Ниже приведен фрагмент кода.

import pyodbc
import pandas as pd

cnxn = pyodbc.connect('MS SQL Serve DB credentials')
cur = cnxn.cursor()
##take row_id as input##
row_id = input()
##retrieving two field information using row_id as input##
quer_del_test1 = "select name,tabdate from test1 where row_id ='{0}'".format(row_id)
## convert into daraframe using pandas##
df_1 = pd.read_sql_query(quer_del_test1,cnxn)
##Now delete two records from test1 and test2 respectively##
del_query = "DELETE FROM test1 WHERE row_id='{0}'".format(row_id)
del_query_2 = "DELETE FROM test2 WHERE name = '{0}' and tabdate = {1}".format(df_1['name'],pd.to_datetime(df_1['tabdate']))
cur.execute(del_query_2)
cur.execute(del_query)
cnxn.commit()
cnxn.close()

Когда я запускаю приведенный выше код, я получаю сообщение об ошибке следующим образом:

('42000', "[42000] [Microsoft][SQL Server Native Client 11.0][SQL Server]Incorrect syntax near '2019'. (102) (SQLExecDirectW)")

Я не могу понять, где я ошибаюсь.В MS SQL Server tabdate Тип данных был установлен как date.

Пожалуйста, пролите немного света на это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...