【发布时间】:2018-04-12 19:58:29
【问题描述】:
我正在尝试获取我拥有的数据库的当前用户。但是我找不到这样做的方法,并且在 stackoverflow 上没有类似的问题。在 postgresql 中有一个方法current_user。例如,我可以只说SELECT current_user,然后我会得到一个包含当前用户名的表。 Sqlalchemy 中是否有类似的东西?
【问题讨论】:
标签: python python-2.7 sqlalchemy
我正在尝试获取我拥有的数据库的当前用户。但是我找不到这样做的方法,并且在 stackoverflow 上没有类似的问题。在 postgresql 中有一个方法current_user。例如,我可以只说SELECT current_user,然后我会得到一个包含当前用户名的表。 Sqlalchemy 中是否有类似的东西?
【问题讨论】:
标签: python python-2.7 sqlalchemy
你可以使用literal_column:
session.query(literal_column("current_user"))
或
connection.execute(select([literal_column("current_user")]))
【讨论】:
<sqlalchemy.sql.functions.current_user at 0x7f8c5af379d0>。你知道为什么我没有得到真实姓名而不是对象吗?
如果你使用 Flask 的 flask-login 模块,你可以只导入一个函数 current_user 和 from flask_login import current_user。
如果你将它保存在数据库中,你可以从数据库和 db 模型(例如 Sqlite/SqlAlchemy)中获取它:
u_id = current_user.id
u_email = current_user.email
u_name = current_user.name
等等
【讨论】:
所以我找到了另一种在 sqlalchemy 中获取当前 db 用户的方法。我可以说func.current_user() 我会得到当前的数据库用户。要使用func,我必须进行导入。导入看起来像这样from sqlalchemy.sql import func。我还发现我可以说:
curr_usr = self.session.query("current_user")
for usr in curr_usr:
user = usr[0]
在那里我也得到了 db 用户。我写了usr[0] 因为curr_usr 返回一个包含两个项目的列表。我不知道它为什么这样做,但它就是这样做的,并且该列表的第一项是 db 用户的名称。
【讨论】: