也許你可以定義一些基礎數據模型,並將它們繼承爲單獨的數據庫。例如:
class User(db.Model):
__abstract__ = 1
# fields define
class UserUK(User):
__bind_key__ = 'uk'
class UserUS(User):
__bind_key__ = 'us'
您可以創建一個字典是model = {"uk": {"User": UserUK}, "us": {"User": UserUS}}
從要求選擇由國家合適的型號。例如:model[country]["User"]
。
完整演示:
import time
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:////path/2/default.db"
app.config["SQLALCHEMY_BINDS"] = {"uk": "sqlite:////path/2/uk.db", "us": "sqlite:////path/2/us.db"}
db = SQLAlchemy(app)
class UserBase(db.Model):
__abstract__ = 1
id = db.Column(db.Integer, primary_key=1)
username = db.Column(db.String(16))
class UserUK(UserBase):
__bind_key__ = "uk"
class UserUS(UserBase):
__bind_key__ = "us"
models = {"uk": {"User": UserUK}, "us": {"User": UserUS}}
@app.route("/<country>")
def index(country):
user = models[country]["User"](username=country + str(time.time()))
db.session.add(user)
db.session.commit()
return country, "added"
if __name__ == "__main__":
app.run(debug=1)