【问题标题】:SqlAlchemy current db userSqlAlchemy 当前数据库用户
【发布时间】:2018-04-12 19:58:29
【问题描述】:

我正在尝试获取我拥有的数据库的当前用户。但是我找不到这样做的方法,并且在 stackoverflow 上没有类似的问题。在 postgresql 中有一个方法current_user。例如,我可以只说SELECT current_user,然后我会得到一个包含当前用户名的表。 Sqlalchemy 中是否有类似的东西?

【问题讨论】:

    标签: python python-2.7 sqlalchemy


    【解决方案1】:

    你可以使用literal_column:

    session.query(literal_column("current_user"))
    

    connection.execute(select([literal_column("current_user")]))
    

    【讨论】:

    • 好吧,它在我创建表的 python 类中工作,但是当我尝试在我的 unittest 类中这样做时,我得到<sqlalchemy.sql.functions.current_user at 0x7f8c5af379d0>。你知道为什么我没有得到真实姓名而不是对象吗?
    • @Blinxen 没有任何代码很难给你原因。您可能想为此提出一个单独的问题。
    【解决方案2】:

    如果你使用 Flask 的 flask-login 模块,你可以只导入一个函数 current_userfrom flask_login import current_user

    如果你将它保存在数据库中,你可以从数据库和 db 模型(例如 Sqlite/SqlAlchemy)中获取它:

    u_id = current_user.id

    u_email = current_user.email

    u_name = current_user.name

    等等

    【讨论】:

      【解决方案3】:

      所以我找到了另一种在 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 用户的名称。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-06-21
        • 1970-01-01
        • 1970-01-01
        • 2013-03-01
        • 1970-01-01
        • 2015-12-21
        • 2011-05-31
        • 1970-01-01
        相关资源
        最近更新 更多