小编典典

如何创建一个mysql连接池或任何更好的方法来初始化多个数据库?

python

在我的代码中,我打开两个mysql连接,并使用HTTP请求将数据插入数据库

g.db = mysql.connector.connect(user=a ,password=password, host=localhost,database=mysq1)
g.db1 = mysql.connector.connect(user=b,password=password, host=localhost,database=mysql2)

@app.route('/user/<db>')  
def insert(db):
   #code for inserting data into mysql1 database
   #code for inserting data into mysql2 database

我正在发出HTTP请求以选择数据库。

  curl -i 'localhost:5000/user/mysql1' #

运行良好,数据已插入到所选数据库中。但是我当时正在考虑为两个连接创建一个连接池,然后使用该池。

问题:

  1. 如何实现mysql连接池?

  2. 还有其他更好的初始化连接的方法。当前,每次请求都会打开连接。


阅读 213

收藏
2021-01-20

共1个答案

小编典典

使用ORM框架使事情变得简单,以下是我们在没有任何ORM框架的情况下创建连接池的基本和通用方法。

  1. mysql.connector.pooling 模块实现集中。

  2. 在向请求者提供连接时,池会打开许多​​连接并处理线程安全性。

  3. 连接池的大小可以在创建池时进行配置。此后无法调整大小。

创建自己的缓冲池并在连接缓冲池的参数中将其命名为 myPool ,也可以声明缓冲池大小= 5(这是数据库连接数)。

请参阅以下详细信息:

dbconfig = {
  "database": "test",
  "user":     "joe"
}

cnx = mysql.connector.connect(pool_name = "mypool",
                              pool_size = 3,
                              **dbconfig)

dbconfig,数据库配置是您每次更改数据库时都提供所有配置详细信息的位置。实际上,如果需要,您可以有多个数据库。

在此处查看此MySQL文档

我们可以看到更多有关如何声明此参数的信息:

MySQLConnectionPool(pool_name=None,
                    pool_size=5,
                    pool_reset_session=True,
                    **kwargs)

此构造函数实例化管理连接池的对象。

详细参数:

1. pool_name: The pool name. If this argument is not given, Connector/Python automatically generates the name, composed from whichever of the host, port, user, and database connection arguments are given in kwargs, in that order.

It is not an error for multiple pools to have the same name. An application that must distinguish pools by their
**pool_name** property should create each pool with a distinct name.

2. pool_size: The pool size. If this argument is not given, the default is 5.

您应该在这里看到一些不错的文档

2021-01-20