您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

如何围绕现有数据库构建Flask应用程序?

如何围绕现有数据库构建Flask应用程序?

我想说你的问题与烧瓶完全无关。例如,你对模板,路线,视图或登录修饰符没有任何问题。

你在其中挣扎的地方是sqlAlchemy。

因此,我的建议是暂时忽略Flask并先适应sqlAlchemy。你需要适应现有的数据库以及如何从sqlAlchemy访问它。使用一些MysqL文档工具找到解决此问题的方法。首先是这样的(请注意,与Flask无关,请问所有……):

#!/usr/bin/python
# -*- mode: python -*-

from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base

engine = create_engine('sqlite:///webmgmt.db', convert_unicode=True, echo=False)
Base = declarative_base()
Base.Metadata.reflect(engine)


from sqlalchemy.orm import relationship, backref

class Users(Base):
    __table__ = Base.Metadata.tables['users']


if __name__ == '__main__':
    from sqlalchemy.orm import scoped_session, sessionmaker, Query
    db_session = scoped_session(sessionmaker(bind=engine))
    for item in db_session.query(Users.id, Users.name):
        print item

在“ engine =” 行中,你需要提供MysqL数据库的路径,以便sqlAlchemy可以找到它。就我而言,我使用了一个预先存在的sqlite3数据库

在“ class Users(Base)” 行中,你需要使用MysqL数据库中的现有表之一。我知道我的sqlite3数据库一个名为“用户”的表。

此后,sqlalchemy知道如何连接到MysqL数据库,并且知道其中一个表。现在,你需要添加所需的所有其他表。最后,你需要指定与sqlalchemy的关系。在这里,我的意思是像一对一,一对多,多对多,亲子等等。sqlAlchemy网站包含有关此内容的冗长部分。

在“ if __name__ == '__main__'” 行之后才出现一些测试代码。如果我不导入python脚本而是运行它,它将被执行。在这里,你将看到我创建了一个数据库会话,并且仅用于一个非常简单的查询

我的建议是,你首先阅读有关sqlAlchemy文档的重要部分,例如描述性表定义,关系模型以及如何查询。一旦知道了这一点,就可以将示例的最后一部分更改为控制器(例如,使用Python的yield方法),并编写一个使用该控制器的视图。

Python 2022/1/1 18:18:37 有475人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶