我的apply.py文件
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'postgres:////tmp/test.db'
db = SQLAlchemy(app) # refer https://flask-sqlalchemy.palletsprojects.com/en/2.x/api/#flask_sqlalchemy.SQLAlchemy
我的一个模型课,在那里我导入了db
个
from app import db
Base = declarative_base()
# User class
class User(db.Model, Base):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(80), unique=True, nullable=False)
email = db.Column(db.String(120), unique=True, nullable=False)
def __repr__(self):
return '<User %r>' % self.username
def get_user_by_id(self, id):
return self.query.get(id)
我的数据库在不同的模式(多租户)中有相同的表集,并且
我发现Postgres通过使用
在我上面的代码片段中,您可以看到db = SQLAlchemy(app)
,根据官方文档,在SQLAlchemy
objct创建中可以设置两个参数,它们是-session_options
和engine_options
,但没有execution_options
参考文献https://flask-sqlalchemy.palletsprojects.com/en/2.x/api/#flask_sqlalchemy.SQLAlchemy
但是,当我创建一个SQLAlchemy
的对象时,如何设置schema_translate_map
我试过了-
db = SQLAlchemy(app,
session_options={
"autocommit": True,
"autoflush": False,
"schema_translate_map": {
None: "public"
}
}
)
但很明显,它不起作用,因为schema_translate_map
低于execution_options
,正如这里提到的https://docs.sqlalchemy.org/en/14/core/connections.html#translation-of-schema-names
任何人都有一个 idea ,如何在创建SQLAlchemy
对象时设置schema_translate_map
.
我的目标是 for each 请求动态设置它.我想从这里控制它
我知道,按照这里的建议,我会采取不同的做法