Superset config 有以下两种配置(DB_CONNECTION_MUTATOR,SQL_QUERY_MUTATOR),可以在一定程度上允许多租户。
允许更改数据库连接 URL 和参数的可调用对象
在运行时,在运行时。这允许像模仿或
任意逻辑。例如,您可以将不同的用户连接到
使用不同的连接参数,或将他们的电子邮件地址作为
用户名。函数接收连接uri对象,connection
params,用户名,并返回变异的 uri 和 params 对象。
示例:
def DB_CONNECTION_MUTATOR(uri, params, username, security_manager, source):
user = security_manager.find_user(username=username)
if user and user.email:
uri.username = user.email
return uri, params
注意返回的uri和params直接传递给sqlalchemy的
比如create_engine(url, **params)
DB_CONNECTION_MUTATOR = None
拦截要执行的 SQL 并可以更改它的函数。
用例是可以围绕添加某种评论标题
带有用户名和工作节点信息等信息
def SQL_QUERY_MUTATOR(sql, username, security_manager):
dttm = datetime.now().isoformat()
return f"-- [SQL LAB] {username} {dttm}\n{sql}"
SQL_QUERY_MUTATOR = None