Python with..asの後で関数の追記する使い方の意味


pandasを使って、sqliteからデータを読み込む例です。

[code]

    from sqlalchemy import create_engine
    import pandas as pd
    
    engine = create_engine('sqlite:///:memory:')
    
    with engine.connect() as conn, conn.begin():
        data = pd.read_sql_table('data', conn)
    
[/code]

with文の基本的な使い方は知っているけど、asの後で関数の呼び出しは見たことないです。このconn.begin()の役割を教えていただければ幸いです。




そう難しい話ではなく, 以下と同等で 後側の `as` がないだけです  
(`.begin()` とはなにか？という質問ならトランザクションの開始です)

[code]

    with engine.connect() as conn:
        with conn.begin():
            pass # なにか処理
    
[/code]

またこれらは次のようにもできます

[code]

    with engine.begin() as conn:
        pass # なにか処理
    
[/code]

参考: (docs.sqlalchemy.org) [Working with Engines and Connections: Using
Transactions](https://docs.sqlalchemy.org/en/14/core/connections.html#using-
transactions)




そう難しい話ではなく, 以下と同等で 後側の `as` がないだけです  
(`.begin()` とはなにか？という質問ならトランザクションの開始です)

[code]

    with engine.connect() as conn:
        with conn.begin():
            pass # なにか処理
    
[/code]

またこれらは次のようにもできます

[code]

    with engine.begin() as conn:
        pass # なにか処理
    
[/code]

参考: (docs.sqlalchemy.org) [Working with Engines and Connections: Using
Transactions](https://docs.sqlalchemy.org/en/14/core/connections.html#using-
transactions)

