python 实现将局域网中所有主机的SQL Server数据库汇总到一台主机上 给出具体代码
时间: 2024-03-13 22:42:31 浏览: 75
以下是使用Python的pyodbc库将局域网中所有主机的SQL Server数据库汇总到一台主机上的代码示例:
```python
import pyodbc
import socket
# 连接到目标数据库
cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER=your_server;DATABASE=your_database;UID=username;PWD=password')
cursor = cnxn.cursor()
# 扫描局域网中的所有主机,找到所有运行SQL Server数据库的主机
for ip in range(1, 255):
hostname = socket.gethostname(ip)
if hostname:
try:
cnxn_remote = pyodbc.connect('DRIVER={SQL Server};SERVER=' + hostname + ';DATABASE=master;UID=username;PWD=password')
cursor_remote = cnxn_remote.cursor()
tables = cursor_remote.tables()
for table in tables:
query = 'SELECT * FROM [' + table.table_name + ']'
data = cursor_remote.execute(query).fetchall()
for row in data:
# 将每个表的查询结果存储到汇总数据库中的相应表中
cursor.execute('INSERT INTO [' + table.table_name + '] VALUES ' + str(row))
cnxn_remote.close()
except:
pass
# 提交并关闭数据库连接
cursor.commit()
cursor.close()
cnxn.close()
```
其中,`your_server`和`your_database`分别是目标数据库所在的服务器和数据库名称,`username`和`password`分别是连接目标数据库所需的用户名和密码。使用`socket.gethostname()`函数扫描局域网中的所有主机,如果主机名存在,则使用`pyodbc.connect()`函数连接到该主机上运行的SQL Server数据库,并查询所有表的数据。然后,将查询结果逐行插入到汇总数据库中的相应表中。最后,使用`cursor.commit()`方法提交更改,并使用`cursor.close()`和`cnxn.close()`方法关闭数据库连接。需要注意的是,这个过程可能需要一些时间来处理大量的数据,因此需要考虑优化查询和存储数据的方式,以提高执行效率和减少资源消耗。
阅读全文