Я новичок в Python и работаю в среде с большим количеством баз данных, которые имеют схожую структуру таблиц.Моя цель - создать через Python сценарии, которые могут запускать сценарии SQL для большого количества баз данных.Сейчас у меня есть простой сценарий, но он не масштабируется.Можно ли получить pyodbc для чтения из таблицы Excel, в которой содержатся данные о моем соединении с базой данных, и выполнить мой SQL-запрос для всех более 100 из них?
Ниже приведен пример сценария, который я запускаю.Как вы видите, я должен создать новые строки cursor.execute для каждой базы данных
import csv
import pyodbc
conn1 = pyodbc.connect('Driver={ODBC Driver 13 for SQL Server};Server=SERVER;Database=Database;UID=user')
conn2 = pyodbc.connect('Driver={ODBC Driver 13 for SQL Server};Server=SERVER;Database=Database;UID=user')
conn3 = pyodbc.connect('Driver={ODBC Driver 13 for SQL Server};Server=SERVER;Database=Database;UID=user')
cursor1 = conn1.cursor()
cursor2 = conn2.cursor()
cursor3 = conn3.cursor()
sql = "SELECT * FROM Users"
sql2 = "SELECT * FROM Computers"
sql3 = "SELECT * FROM Offices"
rows = cursor1.execute(sql)
with open(r'C:\Users\xxx\PycharmProjects\RemoteSQLTest\Test\Database1\Database1\users.csv.', 'w', newline='') as csvfile:
writer = csv.writer(csvfile)
writer.writerow([x[0] for x in cursor1.description])
for row in rows:
writer.writerow(row)
rows = cursor1.execute(sql2)
with open(r'C:\Users\xxx\PycharmProjects\RemoteSQLTest\Test\Database1\Database1\Computers.csv.', 'w', newline='') as csvfile:
writer = csv.writer(csvfile)
writer.writerow([x[0] for x in cursor1.description])
for row in rows:
writer.writerow(row)
rows = cursor1.execute(sql3)
with open(r'C:\Users\xxx\PycharmProjects\RemoteSQLTest\Test\Database1\Database1\Offices.csv.', 'w', newline='') as csvfile:
writer = csv.writer(csvfile)
writer.writerow([x[0] for x in cursor1.description])
for row in rows:
writer.writerow(row)
rows = cursor2.execute(sql)
with open(r'C:\Users\xxx\PycharmProjects\RemoteSQLTest\Test\Database2\Database2\users.csv.', 'w', newline='') as csvfile:
writer = csv.writer(csvfile)
writer.writerow([x[0] for x in cursor2.description])
for row in rows:
writer.writerow(row)
rows = cursor2.execute(sql2)
with open(r'C:\Users\xxx\PycharmProjects\RemoteSQLTest\Test\Database2\Database2\Computers.csv.', 'w', newline='') as csvfile:
writer = csv.writer(csvfile)
writer.writerow([x[0] for x in cursor2.description])
for row in rows:
writer.writerow(row)
rows = cursor2.execute(sql3)
with open(r'C:\Users\xxx\PycharmProjects\RemoteSQLTest\Test\Database2\Database2\Offices.csv.', 'w', newline='') as csvfile:
writer = csv.writer(csvfile)
writer.writerow([x[0] for x in cursor2.description])
for row in rows:
writer.writerow(row)
rows = cursor3.execute(sql)
with open(r'C:\Users\xxx\PycharmProjects\RemoteSQLTest\Test\Database3\users.csv.', 'w', newline='') as csvfile:
writer = csv.writer(csvfile)
writer.writerow([x[0] for x in cursor3.description])
for row in rows:
writer.writerow(row)
rows = cursor3.execute(sql2)
with open(r'C:\Users\xxx\PycharmProjects\RemoteSQLTest\Test\Database3\Computers.csv.', 'w', newline='') as csvfile:
writer = csv.writer(csvfile)
writer.writerow([x[0] for x in cursor3.description])
for row in rows:
writer.writerow(row)
rows = cursor3.execute(sql3)
with open(r'C:\Users\xxx\PycharmProjects\RemoteSQLTest\Test\Database3\Offices.csv.', 'w', newline='') as csvfile:
writer = csv.writer(csvfile)
writer.writerow([x[0] for x in cursor3.description])
for row in rows:
writer.writerow(row)
conn1.close()
conn2.close()
conn3.close()
enter code here