pyodbc 删除 SQL Server 语句不会删除行,即使语句执行?


def rmv_dupes_in_psumsdb(setoffilestoprocess, config):
setoffilestoprocess_fnames = [file.name for file in setoffilestoprocess]
constring = config['db_string']['db_string']
cnxn = pyodbc.connect(constring)
FilesToBeCrunched1000 = list(chunks(list(setoffilestoprocess_fnames), 2))
for FilesChunks1000 in FilesToBeCrunched1000:
sqlstring = 'DELETE FROM {0} WHERE [LOG] IN ('.format(config['db_string']['bd_psums_meta_table'])
# print((FilesChunks1000))
values_string = (', '.join("'" + item + "'" for item in FilesChunks1000))
sqlstring+=values_string
sqlstring+=')'
cnxn.execute(sqlstring)

脚本调用了这个函数,但在数据库端什么也没发生。我写了一个类似于此的函数,它可以执行Select语句,并且可以工作。但这个没有。我打印出来(sqlstring(,它正确地给了我以下输出:

DELETE FROM [NSGWSAINLINE].[dbo].[bd_psums_meta] WHERE [LOG] IN ('0517312.002.7312-08.FRP.00.S25D._Yo9EXAOaDK6asQ2_.0.zip', '0503302.002.3302-20.FRP.00.S26A._obBBQu5GUT1pnKO_.0.zip')
DELETE FROM [NSGWSAINLINE].[dbo].[bd_psums_meta] WHERE [LOG] IN ('0524222.002.4222-08.FRP.00.S25D._cH03BJws2g1pnKO_.0.zip', '0532722.002.2722-15.92FIP.00.S26A._hR10vpeCvpsonKO_.0.zip')
DELETE FROM [NSGWSAINLINE].[dbo].[bd_psums_meta] WHERE [LOG] IN ('0524282.002.4282-25.FRP.00.S25D._0sOzWcCcEptonKO_.0.zip')

实际上,我继续复制了上面的输出,它们在SQL Server中运行并执行了delete语句。那么,为什么这不能在Python中工作呢?

如果连接中没有启用autocommit选项,则应在使用cnxn.commit()执行后提交更改。

最新更新