【问题标题】:How to create a new schema from a flask application如何从烧瓶应用程序创建新模式
【发布时间】:2019-11-29 06:48:33
【问题描述】:

我有烧瓶应用程序,我正在尝试通过多个模式为用户实现多租户。当用户注册时,我正在尝试使用应用程序中的用户名创建一个新架构,并在该特定架构中创建新的两个表。

我可以使用 psql 控制台在数据库中创建一个新模式

postgres=# CREATE SCHEMA schema_name;

如何从烧瓶应用程序创建架构?

【问题讨论】:

    标签: postgresql flask flask-sqlalchemy


    【解决方案1】:

    我也做到了。我的目标是在 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)
    

    基本上我是烧瓶和 python 的初学者。所以我不确定什么是正确的方法。

    【讨论】:

      猜你喜欢
      • 2020-12-19
      • 2011-07-30
      • 1970-01-01
      • 1970-01-01
      • 2022-09-28
      • 2015-09-07
      • 2015-07-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多