Flask-sqlalchemy:我可以为同一个db.model创建多个绑定密钥吗?

时间:2017-09-07 13:35:44

标签: python flask sqlalchemy flask-sqlalchemy

我有2个空数据库。我手边有两项任务。

任务1:

我想创建这两个表m1& m2在我的主数据库(sqlite)中并向表中添加数据。

任务2:

然后我想将这两个表(带数据)从sqlite复制到我的辅助数据库(mysql)。

from flask_sqlalchemy import SQLAlchemy
from flask import Flask

app = Flask(__name__)

app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///db'
app.config['SQLALCHEMY_BINDS'] = {
    'mysql': "mysql+pymysql://root@localhost/db",
}

db=SQLAlchemy(app)

class m1(db.Model):
    __tablename__= 'm1'
    id = db.Column(db.Integer,primary_key=True)
    name = db.Column(db.String(255))

    def __init__(self,name):
        self.name=name

class m2(db.Model):
    __tablename__= 'm2'
    id = db.Column(db.Integer,primary_key=True)
    name = db.Column(db.String(255))

    def __init__(self,name):
        self.name=name

Task1很简单。我使用create_all()创建表,使用db.session.add()将数据添加到这些表。

现在,Task2是一个棘手的问题。我无法在mysql中创建表,因为我的会话绑定到sqlite引擎。我也无法切换会话以查询来自我的主数据库(sqlite)的数据并添加到我的辅助数据库(mysql)。

解决这个问题的可能方法(据我所知)。

  1. 为我想要的同一个表/模型和交换引擎创建多个绑定密钥。例如:我从sqlite中获取表m1中的数据,我切换到mysql引擎并创建表m1并填充数据(我不知道如何)。

  2. 以某种方式创建多个会话(您无法创建,但如果您有办法)

  3. 您建议的其他任何内容。

  4. 规则:

    1. 我在这里谈论flask_sqlalchemy(所以不要写普通sqlalchemy)。
    2. 我不想使用原始SQL查询。抽象很重要。
    3. 在您跳入之前,要复制此问题,请了解问题的方案。如果您发现任何相关内容,请在评论中发布。如果它对我有帮助,你可以继续复制它。

0 个答案:

没有答案