我有flask应用程序,我正在尝试通过多种模式为用户实现多租户。当用户注册时,我正在尝试使用应用程序中的用户名创建新的架构,并在该特定架构中创建新的两个表。
我可以使用psql控制台使用数据库创建新的架构
postgres=# CREATE SCHEMA schema_name;
如何从flask应用程序创建模式?
我已经实现了相同的目标。我的目标是创建一个具有共享数据库和单独架构的SaSS应用。
因此,当用户注册我的高级计划时,我的代码将为我的用户创建一个架构。
首先导入所需的模块。
from sqlalchemy import create_engine, MetaData, Table
在用户注册过程中,我添加了以下代码。 org_id
是一个随机字符串,它是我的架构。另外,我必须在该架构内创建一个post
表。我还需要将模式名称保存在用户表中,这有助于稍后仅在该模式中过滤结果。
# Create schema
engine = create_engine(app.config['SQLALCHEMY_DATABASE_URI'])
if not engine.dialect.has_schema(engine, org_id):
engine.execute('CREATE SCHEMA IF NOT EXISTS %s' % org_id)
# Create table inside this new schema
if engine.dialect.has_schema(engine, org_id):
meta = MetaData()
post = Table('post', meta,
db.Column('id', db.Integer, primary_key=True),
db.Column('body', db.String(140)),
db.Column('timestamp', db.DateTime, index=True, default=datetime.utcnow),
db.Column('user_id', db.Integer),
schema=org_id
)
post.create(engine)
基本上,我是flask&python的初学者。所以我不确定什么是正确的方法。