【发布时间】:2020-08-04 16:40:42
【问题描述】:
我使用postgresql和sqlalchemy,这里是更新一个表,然后使用returning返回多个值:
async def update_monitor(id: int, payload: MonitorIn) -> Dict[str, Any]:
utc_now = to_utc(datetime.now())
query = (
MONITOR
.update()
.where(id == MONITOR.c.id)
.values(**payload.dict(), updated=utc_now)
.returning(MONITOR.c.id,
MONITOR.c.watchlist_id,
MONITOR.c.term,
MONITOR.c.match_substring_variations,
MONITOR.c.nameserver_exclusions,
MONITOR.c.text_exclusions,
MONITOR.c.created,
MONITOR.c.updated)
)
result = await PRIMARY.execute(query=query)
return {'id': result[0],
'watchlist_id': result[1],
'term': result[2],
'match_substring_variations': result[3],
'nameserver_exclusions': result[4],
'text_exclusions': result[5],
'created': result[6],
'updated': result[7]}
PRIMARY 是一个 postgresql 数据库。
import databases
PRIMARY = databases.Database(config.DB_URL)
但是,结果是一个int,它对应于MONITOR.c.id,这是第一个返回值,因此returning 方法似乎只返回一个(第一个)值而不是多个值。我实际上希望返回多个值。并且根据this 它应该支持返回多个值。这里有什么问题?
【问题讨论】:
-
请定义什么是
PRIMARY。您使用什么库来包装 SQLAlchemy 以进行异步/等待?如果您遇到错误,请发布完整的回溯。
标签: python postgresql sqlalchemy