如何在Python代码中检查Airflow数据库中是否已经存在Airflow用户
我是airflow的新手,有一项任务是为airflow Web服务器添加基本身份验证。我使用下面的python代码(从)实现了这一点。我能够创建一个用户并使用该用户/密码对Web服务器进行身份验证如何在Python代码中检查Airflow数据库中是否已经存在Airflow用户,python,airflow,basic-authentication,createuser,Python,Airflow,Basic Authentication,Createuser,我是airflow的新手,有一项任务是为airflow Web服务器添加基本身份验证。我使用下面的python代码(从)实现了这一点。我能够创建一个用户并使用该用户/密码对Web服务器进行身份验证 # navigate to the airflow installation directory $ cd ~/airflow $ python Python 2.7.9 (default, Feb 10 2015, 03:28:08) Type "help", "cop
# 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()
但是,如果用户已经存在于数据库中,那么现在我需要确保只更新用户,而不是创建用户。
是否有会话
对象的属性,如获取
或获取用户
,以了解用户是否已经存在
我可以看到在数据库的airflowdb.users表中创建的用户。但是,我需要从Python代码中进行检查
提前感谢您的帮助。
会话是的一个实例。它的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)]