使用用户输入动态创建烧瓶SQLALCHEMY数据库连接

编程入门 行业动态 更新时间:2024-10-25 00:26:31
本文介绍了使用用户输入动态创建烧瓶SQLALCHEMY数据库连接的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我想知道是否可以使用用户传入的输入创建SqlAlChemy数据库URI。例如,具有用户将必须在其中输入创建数据库URI所需的参数的输入文本字段。只有这样才能建立连接,然后用户才能访问数据库中的数据。

推荐答案

我刚刚遇到了相同的问题,我是这样修复的。

配置部分:

数据-lang="js"数据-隐藏="假"数据-控制台="真"数据-巴贝尔="假"> from contextlib import contextmanager from flask_migrate import Migrate from flask_sqlalchemy import SQLAlchemy from greenwater_app import app app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///db/database1.db' app.config['SQLALCHEMY_BINDS'] = { 'database2': 'sqlite:///db/database2.db' } app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN'] = True app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True app.config['SQLALCHEMY_ECHO'] = True db = SQLAlchemy(app) migrate = Migrate(app, db, compare_type=True) @contextmanager def session_scope(bind='default'): """Provide a transactional scope around a series of operations.""" if bind != 'default': s = db.create_scoped_session(options={'bind': db.get_engine(db.get_app(), bind)}) else: s = db.session s.expire_on_commit = False try: yield s smit() except: s.rollback() raise finally: s.close()

然后,我们可以将";BIND_KEY";作为";数据库2";添加到类定义中,以使用";数据库2";。就像这样。 flask-sqlalchemy.palletsprojects/en/2.x/binds/

数据-lang="js"数据-隐藏="假"数据-控制台="真"数据-巴贝尔="假"> class User(db.Model, BaseModelMixin): __bind_key__ = "database2" __tablename__ = "user"

如果我们想召开一次特别会议,我们可以这样做。

数据-lang="js"数据-隐藏="假"数据-控制台="真"数据-巴贝尔="假"> sql = 'select * from user' with session_scope(bind='database2') as s: res = s.execute(sql).fetchall() print([dict(r) for r in res]) with session_scope() as s: res = s.execute(sql).fetchall() print([dict(r) for r in res])

SESSION_SCOPE(绑定=‘数据库2’)将获取数据库2的会话。

更多推荐

使用用户输入动态创建烧瓶SQLALCHEMY数据库连接

本文发布于:2023-10-16 00:36:04,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1495953.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:烧瓶   数据库连接   动态   用户   SQLALCHEMY

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!