python代码 " />
在 Python 开发中,我们经常需要使用数据库进行数据的存储、读取和处理。而在使用数据库时,配置信息的正确性尤为重要,因此需要在代码中读取数据库配置信息。下面我将介绍一下如何用 Python 读取数据库配置信息。
1. 配置文件
首先,我们应该将数据库的配置信息存储在一个配置文件中。常用的配置文件格式有 ini、yaml、json 等,我们这里以 ini 文件为例。
示例配置文件会长这样:
```
[database]
host = 127.0.0.1
port = 3306
user = root
password = 123456
dbname = test
```
将配置信息保存在配置文件中,可以方便的修改和管理,降低了配置信息的耦合性。除此之外,如果一个服务需要连接多个数据库,只需要编写多个配置文件即可。
2. 读取配置信息
使用 Python 读取配置文件中的数据需要用到 ConfigParser 库。首先我们需要导入库,实例化 ConfigParser 对象并读取配置文件。
```
from configparser import ConfigParser
import os
# 获取配置文件所在路径
path = os.path.join(os.getcwd(), 'config.ini')
# 实例化 ConfigParser 对象
config = ConfigParser()
# 读取配置文件
config.read(path)
```
在实例化 ConfigParser 对象之后,就可以通过 read 方法读取配置文件内容。通常情况下,配置文件的路径可以写成相对路径或绝对路径,上述代码使用 os 模块的 join 方法获取当前文件所在路径,然后拼接出配置文件的路径。
读取数据库的配置信息也很简单,只需要在 ConfigParser 对象上调用 get 方法,传入对应的section和option即可。
```
host = config.get('database', 'host')
port = config.get('database', 'port')
user = config.get('database', 'user')
password = config.get('database', 'password')
dbname = config.get('database', 'dbname')
```
其中,第一个参数是 section 的名称,第二个参数是 option 的名称。
3. 创建数据库连接
有了数据库配置信息,就可以使用 Python 中的 pymysql 库来创建与数据库的连接了。
```
import pymysql
conn = pymysql.connect(
host=host,
port=int(port),
user=user,
password=password,
db=dbname
)
```
connect 方法需要传入必要的参数,包括 host、port、user、password 和 db。这里注意,port 参数需要转换为整型。至此,我们已经成功的读取了数据库的配置信息,创建了一个与数据库连接的对象。接下来,就可以通过 conn 对象进行数据库操作了。
4. 封装连接池
对于需要频繁操作数据库的服务,每次都重新连接数据库是比较耗时的,而且容易造成数据库连接数滥用。因此,可以封装一个数据库连接池的类,实现从连接池中获取连接和归还连接的功能。以下是一个简单的 Python3 实现:
```
import pymysql
from queue import Queue
from threading import Lock
class ConnectionPool:
def __init__(self, max_conn, host, port, user, password, db, charset):
self.max_conn = max_conn
self.host = host
self.port = port
self.user = user
self.password = password
self.db = db
self.charset = charset
self._pool = Queue(max_conn)
self._lock = Lock()
for _ in range(max_conn):
conn = self._create_conn()
self._put_conn(conn)
def _create_conn(self):
conn = pymysql.connect(
host=self.host,
port=self.port,
user=self.user,
password=self.password,
db=self.db,
charset=self.charset
)
return conn
def _put_conn(self, conn):
self._pool.put(conn)
def _get_conn(self):
try:
conn = self._pool.get(True, 5)
except:
conn = None
return conn
def get_conn(self):
conn = self._get_conn()
if not conn:
conn = self._create_conn()
return conn
def close_conn(self, conn):
self._put_conn(conn)
def clear_conn(self):
while not self._pool.empty():
conn = self._pool.get()
conn.close()
self._pool = None
```
使用 ConnectionPool 实例:
```
pool = ConnectionPool(10, host, port, user, password, dbname, 'utf8')
conn = pool.get_conn()
# do some operations here
pool.close_conn(conn)
```
通过使用 ConnectionPool 类,我们可以在创建对象时自动创建给定数量的连接,然后在需要连接数据库时从连接池中获取,避免了频繁创建连接的开销。
总体来说,读取数据库配置信息在 Python 中十分简单,只需要用 ConfigParser 库读取配置文件,然后使用 pymysql 库创建与数据库的连接。对于需要频繁连接数据库的服务,建议将连接池封装成单独的类,从而降低数据库连接的创建和销毁开销。
壹涵网络我们是一家专注于网站建设、企业营销、网站关键词排名、AI内容生成、新媒体营销和短视频营销等业务的公司。我们拥有一支优秀的团队,专门致力于为客户提供优质的服务。
我们致力于为客户提供一站式的互联网营销服务,帮助客户在激烈的市场竞争中获得更大的优势和发展机会!
发表评论 取消回复