web-dev-qa-db-ja.com

python mysql-connectorを使用した接続プーリング

Mysql-connector 2.1.5で接続プールを使用したい

Ubuntuではすべてが正常に動作しますが、アルパインに切り替えて このファイル を使用してコネクタをインストールしました(説明は ここ )。

インストールは機能しているようです。 mysql.connector.connection()を使用できますが、mysql.connector.pooling.MySQLConnectionPool()を試すたびに_AttributeError: 'module' object has no attribute 'pooling'_エラーが発生します。

また、cnxpool = mysql.connector.connection(pool_name="...")を使用してプールを暗黙的に作成しようとしましたが、接続を取得できません。試行するたびにcnx = cnxpool.get_connection()エラーが発生します_AttributeError: 'MySQLConnection' object has no attribute 'get_connection'_

プラットフォームに依存しないインストールパッケージでプーリングを使用する方法はありますか、それともそこには実装されていませんか?

2
Ruehri

これがなぜ私にも起こっているのかを理解するために、コンソールで実験を行いました。最後に、ファイルフォルダーを直接検索してパッケージを探し、プーリングファイルがmysql.connectorパッケージのバージョン。

案の定それはありました。

結局、私は単にインポート文を変更しました。使っていた

import mysql.connector
pool = mysql.connector.pooling.MySQLConnectionPool(**config)

コンソールで少し遊んだ後、私は使用しただけでいいと思いました。

import mysql.connector
from mysql.connector import pooling
pool = pooling.MySQLConnectionPool(**config)

うまくいきました。 「なぜ」とは言えませんが、うまくいきました。

4
Nerivon

mySQLコネクタを使用して接続プールを作成できます。Pythonのpooling.MySQLConnectionPoolおよびpooling.PooledMySQLConnectionクラスは、接続プールのインスタンス化と管理を提供します。

import mysql.connector
from mysql.connector import Error
from mysql.connector import pooling
try:
   connection_pool = mysql.connector.pooling.MySQLConnectionPool(pool_name="pool",
                                                              pool_size=1,
                                                              pool_reset_session=True,
                                                              Host='yourHost',
                                                              database='mysql_db',
                                                              user='username',
                                                              password='password')

参照してください- Python接続プーリング

1
Vishal Hule

python-mysql-poolhttps://github.com/LuciferJack/python-mysql-pool を使用できます

設定が簡単で、マルチデータベースをサポートし、動的プールと固定プールをサポートします。

step:1

"""
file:mysql_config.py change to your db config
"""
db_config = {
    'local': {
        'Host': "10.95.130.118", 'port': 8899,
        'user': "root", 'passwd': "123456",
        'db': "marry", 'charset': "utf8",
        'pool': {
            #use = 0 no pool else use pool
            "use":1,
            # size is >=0,  0 is dynamic pool
            "size":0,
            #pool name
            "name":"local",
        }
    },
    'poi': {
        'Host': "10.95.130.***", 'port': 8787,
        'user': "lujunxu", 'passwd': "****",
        'db': "poi_relation", 'charset': "utf8",
        'pool': {
            #use = 0 no pool else use pool
            "use":0,
            # size is >=0,  0 is dynamic pool
            "size":0,
            #pool name
            "name":"poi",
        }
    },
}

step:2

"""
Note:create your own table
"""

step:3 (example show below)

"""
pool size special operation
"""
def query_pool_size():
    job_status = 2
    _sql = "select *  from master_job_list j  where j.job_status  in (%s) "
    _args = (job_status,)
    task = query(db_config['local'], _sql,_args)
    logging.info("query_npool method query_npool result is %s ,input _data is %s ", task , _args)
    return

"""
single query
"""
def query_npool():
    job_status = 2
    _sql = "select *  from master_job_list j  where j.job_status  !=%s "
    _args = (job_status,)
    task = query_single(db_config['local'], _sql,_args)
    logging.info("query_npool method query_npool result is %s ,input _data is %s ", task , _args)
    return

"""
insert
"""
def insert(nlp_rank_id,hit_query_Word):
    #add more args
    _args = (nlp_rank_id,hit_query_Word)
    _sql = """INSERT INTO nlp_rank_poi_online (nlp_rank_id,hit_query_Word,rank_type,poi_list,poi_raw_list,article_id,city_id,status,create_time,version,source_from) VALUES (%s,%s,%s, %s, %s,%s, %s,%s, %s,%s,%s)"""
    affect = insertOrUpdate(db_config['local'], _sql, _args)
    logging.info("insert method insert result is %s ,input _data is %s ", affect , _args)
    return

"""
update
"""
def update(query_Word,query_id):
    _args = (query_Word,query_id)
    _sql = """update nlp_rank  set query_Word = %s  WHERE  id = %s"""
    affect = insertOrUpdate(db_config['local'], _sql, _args)
    logging.info("update method update result is %s ,input _data is %s ", affect , _args)
    return
0
Junxu Lu