Snažím sa integrovať sqlalchemy s aiomysql na python 3.6, pomocou oficiálneho príkladu GitHub tu je môj úplný kód
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()
ale dostanem nasledujúcu chybu
File "myfile.py", line 45
async with engine.db1.acquire() as conn:
^
SyntaxError: invalid syntax
čo chýba v mojom kóde? Viem, že chyba je celkom zjavná, ale ako ju môžem opraviť?
odpovede:
1 pre odpoveď č. 1async with
môže nastať iba vo vnútri async def .
Presuňte kód do async def main()
a zavolajte ho run_until_complete()