python использует query_1 результат в query_2 где условие, поскольку оба запроса будут выполняться на разных sql server

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