2017-10-31 4 views
1

Ich versuche, den aktuellen Benutzer der db ich habe. Aber ich konnte keinen Weg finden, dies zu tun, und es gibt keine Fragen zu Stackoverflow, die dem ähnlich sind. In postgresql gibt es eine Methode current_user. Zum Beispiel könnte ich einfach sagen SELECT current_user und ich würde eine Tabelle mit dem aktuellen Benutzernamen erhalten. Gibt es in Sqlalchemy etwas Ähnliches?SqlAlchemy aktuellen db Benutzer

Antwort

2

können Sie literal_column verwenden:

session.query(literal_column("current_user")) 

oder

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

Nun, es funktionierte in meiner Python-Klasse, wo ich meine Tabellen erstellt habe, aber wenn ich es in meiner Unittest-Klasse versuche, bekomme ich ''. Hast du eine Idee, warum ich nicht den richtigen Namen anstelle des Objekts bekomme? – Blinxen

+0

@Blinxen Es ist schwierig, Ihnen den Grund ohne Code zu geben. Vielleicht möchten Sie eine separate Frage dazu stellen. – univerio

0

So fand ich einen anderen Weg, um die aktuellen db Benutzer in sqlalchemy zu erhalten. Ich kann einfach func.current_user() sagen und ich werde den aktuellen db Benutzer bekommen. Um func zu verwenden, musste ich einen Import machen. Der Import sieht so aus: from sqlalchemy.sql import func. Ich fand auch heraus, dass ich einfach sagen konnte:

curr_usr = self.session.query("current_user") 
    for usr in curr_usr: 
     user = usr[0] 

Dort bekomme ich auch die db Benutzer. Ich schrieb usr[0], weil curr_usr eine Liste mit zwei Elementen zurückgeben. Ich weiß nicht, warum es das tut, aber es tut es einfach und das erste Element dieser Liste ist der Name des Datenbankbenutzers.

Verwandte Themen