python和sql server连接
时间: 2023-04-27 09:00:27 浏览: 93
Python可以通过pyodbc库来连接SQL Server数据库。需要先安装pyodbc库,然后使用以下代码连接数据库:
```python
import pyodbc
# 连接数据库
conn = pyodbc.connect('DRIVER={SQL Server};SERVER=服务器地址;DATABASE=数据库名称;UID=用户名;PWD=密码')
# 执行SQL语句
cursor = conn.cursor()
cursor.execute('SELECT * FROM 表名')
# 获取查询结果
result = cursor.fetchall()
# 关闭连接
cursor.close()
conn.close()
```
其中,需要将`服务器地址`、`数据库名称`、`用户名`和`密码`替换为实际的值。执行SQL语句可以使用`execute()`方法,获取查询结果可以使用`fetchall()`方法。最后需要关闭连接,释放资源。
相关问题
python和sqlserver如何连接
要连接Python和SQL Server,可以使用pyodbc库。以下是连接示例:
```
import pyodbc
# 设置数据库连接参数
server = 'your_server_name'
database = 'your_database_name'
username = 'your_username'
password = 'your_password'
# 连接数据库
conn_str = f'DRIVER={{SQL Server}};SERVER={server};DATABASE={database};UID={username};PWD={password}'
conn = pyodbc.connect(conn_str)
# 执行查询
cursor = conn.cursor()
cursor.execute('SELECT * FROM your_table')
rows = cursor.fetchall()
# 关闭连接
conn.close()
```
在这个示例中,您需要将“your_server_name”、“your_database_name”、“your_username”和“your_password”替换为您的SQL Server连接信息,并将“your_table”替换为您要查询的表名。
使用python 创建sql server 连接池类
下面是一个使用Python创建SQL Server连接池的示例代码:
```python
import pyodbc
from queue import Queue
from threading import Lock
class SQLServerConnectionPool:
def __init__(self, server, database, username, password, max_connections=5):
self.server = server
self.database = database
self.username = username
self.password = password
self.max_connections = max_connections
self.connection_queue = Queue(maxsize=max_connections)
self.lock = Lock()
self._create_connections(max_connections)
def _create_connections(self, max_connections):
for i in range(max_connections):
connection = pyodbc.connect(f"Driver={{SQL Server}};Server={self.server};Database={self.database};UID={self.username};PWD={self.password}")
self.connection_queue.put(connection)
def get_connection(self):
connection = self.connection_queue.get()
return connection
def release_connection(self, connection):
self.connection_queue.put(connection)
def close_all_connections(self):
with self.lock:
while not self.connection_queue.empty():
connection = self.connection_queue.get()
connection.close()
```
这个类的构造函数接收SQL Server的服务器名、数据库名、用户名和密码,以及最大连接数。它使用Python标准库中的队列(Queue)来存储连接,并使用锁(Lock)来确保线程安全。在初始化时,它创建max_connections个连接,并将它们放入队列中。当需要连接时,可以使用get_connection方法从队列中获取连接;使用release_connection方法将连接释放回队列中。最后,使用close_all_connections方法可以关闭所有连接并清空队列。
使用此类的示例代码:
```python
pool = SQLServerConnectionPool(server='localhost', database='test', username='sa', password='password', max_connections=2)
def query_database():
connection = pool.get_connection()
cursor = connection.cursor()
cursor.execute('SELECT * FROM test_table')
rows = cursor.fetchall()
pool.release_connection(connection)
return rows
for i in range(4):
print(query_database())
pool.close_all_connections()
```
在这个示例中,我们创建了一个连接池,最大连接数为2。我们定义了一个query_database函数,它从连接池中获取连接,执行SQL查询,然后释放连接。我们使用循环4次调用此函数,以测试连接池的行为。最后,我们使用close_all_connections方法关闭所有连接。
阅读全文