class MysqlOptAsync(object):
def __init__(self, loop):
self.host = host
self.port = port
self.user = username
self.password = password
self.db = database
self._pool = None
self._loop = loop
# self._pool = None
async def pool(self):
if not self._pool:
print('開始生成鏈接池')
self._pool = await aiomysql.create_pool(host=self.host, port=self.port, user=self.user,password=self.password, db=self.db, loop=self._loop)
print(self._pool)
return self._pool
async def insertOpt(self, data=None):
async with self._pool.acquire() as conn:
async with conn.cursor() as cur:
sql = 'insert into test_asyncio(age) value(%s);'
try:
await cur.execute(sql, data)
await conn.commit()
except Exception as e:
print(e)
await conn.rollback()
# await cur.commit()
# print(await cur.last_id())
if __name__ == '__main__':
async def insert_data(obj_str=None):
for i in range(21, 40):
await obj_str.insertOpt(data=(i,))
async def main(loop):
mysql = MysqlOptAsync(loop=loop)
await mysql.pool()
await insert_data(obj_str=mysql)
loop = asyncio.get_event_loop()
loop.run_until_complete(main(loop))
數(shù)據(jù)庫的異步操作,aiomysql
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
相關(guān)閱讀更多精彩內(nèi)容
- 在前面的系列博客中,我曾經(jīng)介紹過,MongoDB數(shù)據(jù)庫的C#驅(qū)動已經(jīng)全面支持異步的處理接口,并且接口的定義幾乎是重...
- 以下內(nèi)容來自《Android 從小工到專家》 一、數(shù)據(jù)庫升級 隨著我們系統(tǒng)的升級,數(shù)據(jù)庫一般也要跟著一起變化。An...
- 在游戲服務(wù)器開發(fā)時(shí),考慮到數(shù)據(jù)更新的性能問題,好多數(shù)據(jù)都不使用外鍵約束,每張表采用異步更新的方式,追求最級的一致性...