pyodbc Delete Statement for SQL 即使语句执行,服务器也不会删除行?
pyodbc Delete Statement for SQL Server doesn't delete rows even though statement executes?
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 服务器中并执行了删除语句。那么,为什么这在 Python 中不起作用?
如果您的连接中没有启用 autocommit
选项,您应该在使用 cnxn.commit()
执行后提交您的更改。
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 服务器中并执行了删除语句。那么,为什么这在 Python 中不起作用?
如果您的连接中没有启用 autocommit
选项,您应该在使用 cnxn.commit()
执行后提交您的更改。