#python #python-3.x #pypyodbc
#python #python-3.x #pypyodbc
Вопрос:
python использует query_1 результат в query_2 где условие, поскольку оба запроса будут выполняться на разных sql server
cnxn = pyodbc.connect(driver = '{SQL Server}', host = 'server1', database = 'db1', user = '', password = '', Trusted_Connection = 'yes')
cursor = cnxn.cursor()
cnxn1 = pyodbc.connect(driver = '{SQL Server}', host = 'server2', database = 'db2', user = '', password = '', Trusted_Connection = 'yes')
cursor1 = cnxn1.cursor()
query = "SELECT top(10) Batch_ID FROM [db1].[dbo].[table1];"
cursor.execute(query)
Result = cursor.fetchall()
print (Result)
query1="delete FROM [db2].[dbo].[table2] where Batch_ID in (**Result**);" ###i have use 1st query result in this where condition
cursor.execute(query1)
Result1 = cursor1.fetchall()
Комментарии:
1. Что вы пытаетесь спросить, это не очень понятно из того, что вы написали
2. мне нужно использовать результат 1-го запроса во 2-м запросе. результат запроса 1 имеет вид [(‘123’,),(‘456’,),(‘789’,)] но это должно быть преобразовано как (‘123′,’456′,’789’)
Ответ №1:
На самом деле вам не нужно возиться с построением IN
предложения для вашего DELETE
оператора. Вы можете просто использовать обычный ... WHERE Batch_ID = ?
, а затем передать список значений .executemany
, например
query = "SELECT TOP(10) Batch_ID FROM [db1].[dbo].[table1];"
cursor.execute(query)
result = cursor.fetchall()
query1 = "DELETE FROM [db2].[dbo].[table2] WHERE Batch_ID = ?;"
cursor.executemany(query1, result)