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'
_
プラットフォームに依存しないインストールパッケージでプーリングを使用する方法はありますか、それともそこには実装されていませんか?
これがなぜ私にも起こっているのかを理解するために、コンソールで実験を行いました。最後に、ファイルフォルダーを直接検索してパッケージを探し、プーリングファイルがmysql.connector
パッケージのバージョン。
案の定それはありました。
結局、私は単にインポート文を変更しました。使っていた
import mysql.connector
pool = mysql.connector.pooling.MySQLConnectionPool(**config)
コンソールで少し遊んだ後、私は使用しただけでいいと思いました。
import mysql.connector
from mysql.connector import pooling
pool = pooling.MySQLConnectionPool(**config)
うまくいきました。 「なぜ」とは言えませんが、うまくいきました。
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接続プーリング
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