16.aiomysql-Pool

6522 단어
16.aiomysql-Pool
Pool-aiomysql 0.0.9 documentation
 
Pool
이 라이브러리는 연결 탱크와 일반 연결 대상을 제공합니다.
기본 용도는 다음과 같습니다.
import asyncio
import aiomysql

loop = asyncio.get_event_loop()

@asyncio.coroutine
def go()
    pool = yield from aiomysql.create_pool(host='127.0.0.1', port=3306,
                                           user='root', password='',
                                           db='mysql', loop=loop)

    with (yield from pool) as conn:
        cur = yield from conn.cursor()
        yield from cur.execute("SELECT 10")
        # print(cur.description)
        (r,) = yield from cur.fetchone()
       assert r == 10
    pool.close()
    yield from pool.wait_closed()

loop.run_until_complete(go())

  create_pool (minsize=1, maxsize=10, loop=None, **kwargs)
- MySQL 데이터베이스의 연결 풀에 대한 공동 절차를 만듭니다.
매개변수:
  • minsize(int) - 연결 탱크의 최소 연결 수
  • maxsize(int) - 연결 탱크의 최대 연결 데이터
  • loop - 선택할 수 있는 이벤트 순환 실례입니다.loop을 지정하지 않으면 asyncio를 사용합니다.get_event_loop()
  • echo(bool) - 로그 SQL 조회 실행(기본값: False)
  • kwargs - 이 함수는aiomysql를 받아들인다.connect () 에 필요한 모든 매개 변수와 선택할 수 있는 키워드 매개 변수loop,minsize,maxsize.

  • 반환:
    Pool 인스턴스
     
    Pool류
    연결 풀 1개
    Pool이 생성된 후minsize가 지정한 빈 연결을 가지고maxsize가 정한 연결수까지 연장할 수 있습니다.
    minsize가 0이면 Pool이 시작할 때 연결을 만들지 않습니다.
    maxsize가 0이면 Pool의 크기는 제한이 없습니다. (물론 사용이 끝난 연결을 회수합니다.)
    Pool을 사용하는 가장 중요한 방법은 다음과 같은 문구로 데이터베이스 연결을 가져오는 것입니다.
    with (yield from pool) as conn:
        cur = yield from conn.cursor()

    with 문장을 사용하지 않으려면 별도로 참고할 수 있음Pool.acquire() Pool.release() 。 
    Pool 클래스의 속성:
    1. echo: echo 모드 상태로 돌아갑니다.True인 경우 실행된 모든 질의를 aiomysql이라는 logger에 기록합니다.
    2. minsize: Pool의 최소 크기(읽기만 가능), 기본값은 1입니다.
    3. maxsize: Pool의 최대 크기(읽기만 가능), 기본값은 10입니다.
    4. size: 현재 Pool의 크기(읽기만 가능), 사용된 것과 빈 연결을 포함한다.
    5.freesize:Pool에서 빈 연결 수(읽기만 가능);
    방법:
    1、 clear ()
    pool 닫기
    닫을 pool 연결을 표시합니다. 닫힌 pool은 새로운 연결을 허용하지 않습니다.
    이미 받은 연결의 실제 종료를 기다리고 싶으면 close() wait_closed()。경고: 이 방법은 하나의 협정이 아니다!
    2、 terminate ()
    pool을 종료하고 pool을 닫으며 가져온 모든 연결을 즉시 닫습니다.
    terminate () 방법 후 호출 wait_closed() 。경고: 이 방법은 하나의 협정이 아니다!
    3、 wait_closed ()
    연결된 모든 연결을 풀고 닫기를 기다리는 협정
    실제 pool이 닫힐 때까지 close () 다음에 호출해야 합니다.
    4、 acquire ()
    빈 pool에서 연결의 협정을 가져옵니다.필요에 따라 새 연결을 만들고 pool의 크기는 maxsize보다 작습니다.
    Connection 인스턴스를 반환합니다.
    5、 release (conn)
    연결 conn을 빈 pool로 변환하여 나중에 다시 사용할 수 있도록 합니다.
     
    마지막으로 connection pool 방식을 사용하는 또 다른 예제 코드를 붙여 넣습니다.
    import asyncio
    import aiomysql
    
    
    async def test_example(loop):
        pool = await aiomysql.create_pool(host='127.0.0.1', port=3306,
                                          user='root', password='',
                                          db='mysql', loop=loop)
        async with pool.acquire() as conn:
            async with conn.cursor() as cur:
                await cur.execute("SELECT 42;")
                print(cur.description)
                (r,) = await cur.fetchone()
                assert r == 42
        pool.close()
        await pool.wait_closed()
    
    
    loop = asyncio.get_event_loop()
    loop.run_until_complete(test_example(loop))

     
    posted on
    2018-04-12 19:05 Hello _ World 읽기(
    ...) 설명(
    ...) 모음 편집
    전재 대상:https://www.cnblogs.com/zwb8848happy/p/8809861.html

    좋은 웹페이지 즐겨찾기