gpt4 book ai didi

python - 围绕现有数据库的 Flask sqlalchemy 示例

转载 作者:太空狗 更新时间:2023-10-30 02:18:55 31 4
gpt4 key购买 nike

问题:在具有多个绑定(bind)的应用中,需要有自动将 sqlalchemy 映射到现有数据库的完整工作示例。

我想绑定(bind)两个数据库并让一个自动映射表。我需要这样做,因为我无法控制一个数据库,因此必须不断地重新编写我的模型,并且可能会在每次迁移时删除新表。

我喜欢给出的答案 here ,但我似乎无法让它在 Flask 中工作(我只能使用 sqlalchemy 根据示例进行查询)。

我从上面的示例中设置的 model.py 结果为

编辑我拉线

 db.Model.metadata.reflect[db.engine]

来自另一个帖子,它应该是 db.Model.metadata.reflect(db.engine)非常简单的解决方案

这是我的模型.py

from app import db
from sqlalchemy.orm import relationship

db.Model.metadata.reflect[db.engine]#change to (db.engine)

class Buildings(db.Model):
__table__ = db.Model.metadata.tables['test']
__bind_key__ = 'chet'
def __repr__(self):
return self.test1

.... other models from sqlalchemy uri here...

我明白了

>>> from app import db, models
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "app/__init__.py", line 69, in <module>
from app import views, models
File "app/views.py", line 1, in <module>
from app import app,models, db
File "app/models.py", line 163, in <module>
db.Model.metadata.reflect[db.engine]
TypeError: 'instancemethod' object has no attribute '__getitem__'

这是我的 config.py

SQLALCHEMY_DATABASE_URI = 'postgresql://chet@localhost/ubuntuweb'

SQLALCHEMY_BINDS = {
'chet': 'postgresql://chet@localhost/warehouse',
}

这是我的 init.py 文件

from flask import Flask
from flask_bootstrap import Bootstrap
from flask.ext.sqlalchemy import SQLAlchemy
from flask.ext.admin import Admin, BaseView, expose
from flask.ext.script import Manager
from flask.ext.migrate import Migrate, MigrateCommand
from flask.ext.login import LoginManager, UserMixin, login_required

app = Flask(__name__)

app.config['UPLOAD_FOLDER'] = 'app/static'
app.config.from_object('config')
db = SQLAlchemy(app)
migrate = Migrate(app, db)
manager = Manager(app)
manager.add_command('db', MigrateCommand)

Bootstrap(app)

from app import views, models
admin = Admin(app)

最佳答案

你的代码有

db.Model.metadata.reflect[db.engine]

应该是什么时候

db.Model.metadata.reflect(db.engine)  # parens not brackets

这应该从堆栈跟踪中非常明显....

关于python - 围绕现有数据库的 Flask sqlalchemy 示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33248702/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com