中python删除了SQL查询的一些行,以一定范围的日期(min&Max)和唯一键[重复]

问题描述 投票:0回答:1

试图执行此操作时:

mindate = min(df['review_ds'])
maxdate = max(df['review_ds'])

Unique_queue_id= df['queue id'].unique().astype(str).tolist()

cnxn.execute(r"""DELETE FROM [DATAWRHS-FACEBOOK].[dbo].[QA_PDO_AGE_AFFINITY_NEW] WHERE [review_ds] >= '""" + str(mindate) + """'
               AND [review_ds] <= '""" + str(maxdate) + """'
               AND [queue id] IN Unique_queue_id
               """)
cnxn.commit()

我得到这个错误

PROGRAGIMMMINGERROR:('42000',“ [42000] [Microsoft] [SQL Server本地客户端11.0] [SQL Server] [SQL Server]不正确的语法附近'simolor_queue_id'。(102)(SQLEXECECDIRTECTW)

come,请帮助我知道我有脑袋,最大和列表queue_ids.
我想在SQL查询中更新一些数据,该数据具有相同的日期,并排队了新接收数据的ID。因此,我想使用(最小日期和最大日期,仅选择我在新数据中的队列ID)中找到数据,然后删除并将新数据附加到查询中。

不使用值的字符串串联来构建SQL查询。使用绑定变量 您没有说您使用的是什么SQL驱动程序,而是想做一些使用

?
python sql delete-row multiple-conditions
1个回答
0
投票
execute

(检查文档的文档相关语法的SQL驱动程序):

mindate = min(df['review_ds']) maxdate = max(df['review_ds']) Unique_queue_id= df['queue id'].unique().astype(str).tolist() cnxn.execute( f"""DELETE FROM [DATAWRHS-FACEBOOK].[dbo].[QA_PDO_AGE_AFFINITY_NEW] WHERE [review_ds] >= ? AND [review_ds] <= ? AND [queue id] IN ({','.join('?' for _ in Unique_queue_id)})""", [ mindate, maxdate, *Unique_queue_id, ], )

注:您的SQL驱动程序可能具有将值列表绑定到
IN

子句的更好方法 - 检查驱动程序的文档。
	

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.