如何在Python代码中检查气流数据库中是否已经存在Airflow用户



我是airflow的新手,有一项任务是为airflow Webserver添加基本身份验证。我使用下面的python代码(来自https://airflow.apache.org/docs/apache-airflow/1.10.1/security.html#password)。我能够创建一个用户,并使用该用户/密码向Airflow Web服务器进行身份验证。

# navigate to the airflow installation directory
$ cd ~/airflow
$ python
Python 2.7.9 (default, Feb 10 2015, 03:28:08)
Type "help", "copyright", "credits" or "license" for more information.
>>> import airflow
>>> from airflow import models, settings
>>> from airflow.contrib.auth.backends.password_auth import PasswordUser
>>> user = PasswordUser(models.User())
>>> user.username = 'new_user_name'
>>> user.email = 'new_user_email@example.com'
>>> user.password = 'set_the_password'
>>> session = settings.Session()
>>> session.add(user)
>>> session.commit()
>>> session.close()
>>> exit()

然而,现在我需要确保我只更新用户,而不是在用户已经存在于airflow DB中时创建。session对象是否有类似getgetusers的属性来知道用户是否已经存在。

我可以在数据库中看到在airflowdb.users表中创建的用户。但是,我需要从Python代码中进行检查。

提前感谢您的帮助。

session是SQLAlchemy会话的一个实例。它的execute()方法允许您运行SQL表达式。因此,您可以简单地从用户表中选择:

from airflow import settings
session = settings.Session()
users = session.execute("SELECT * FROM users").fetchall()
print(users)
session.close()

输出:

[(1, 'new_user_name', 'new_user_email@example.com', '$2b$12$qr7bCywAv4kTeakli.fTXuNUXonqSzXUqZIX/ZVIMceZDEIsKhgNO', 0)]

最新更新