SQL Server的pyodbc Delete语句即使执行该语句也不会删除行?

2024-10-03 17:24:40 发布

您现在位置:Python中文网/ 问答频道 /正文

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')

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


Tags: infromlogconfigforstringzipwhere