公式の例を使って、sqlalchemyをaiomysqlとpython 3.6で統合しようとしています ギブス これが私のフルコードです
import sqlalchemy as sa
import asyncio
from aiomysql.sa import create_engine
DB1 = dict(host="xxx",...)
DB2 = dict(host="yyy",...)
DATABASES = dict(db1=db1, db2=db2)
async def get_engine(loop, configs):
configs = configs.copy()
configs["loop"] = loop
engine = await create_engine(**configs)
return engine
class Engine(object):
__shared_state = {}
running = None
def __init__(self, loop):
print("init", Engine.running)
self.__dict__ = Engine.__shared_state
self.loop = loop
if not Engine.running:
self.ignite(loop)
def connect(self, key, configs, loop):
engine = loop.run_until_complete(get_engine(loop, configs))
self.__dict__[key] = engine
def ignite(self, loop):
Engine.running = True
for key, configs in DATABASES.items():
self.connect(key, configs, loop)
def DoMyQueries(conn):
pass
ioloop = asyncio.get_event_loop()
engine = Engine(ioloop)
async with engine.db1.acquire() as conn:
DoMyQueries(conn)
engine.db1.close()
await engine.wait_closed()
しかし、私は次のエラーが出ています
File "myfile.py", line 45
async with engine.db1.acquire() as conn:
^
SyntaxError: invalid syntax
私のコードに何が欠けていますか?私はエラーがかなり明白であることを知っています、しかし、どうやってそれを直すのですか?
回答:
回答№1は1async with
内側でしか起こらない async def .
あなたのコードを async def main()
そしてでそれを呼び出す run_until_complete()