当前位置: 首页 > 面试题库 >

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

寇桐
2023-03-14
问题内容

我已经有一个现有的数据库,其中包含很多表和很多数据MySQL。我打算创建一个Flask应用程序,并与它一起使用sqlalchemy。现在,我在irc上查询了一下,然后在Google上环顾了一下,并尝试了以下想法:

首先,我使用sqlacodegen从我的生成模型DB。但是后来我对此有些困惑,然后又看了一些。我发现了这个。

这看起来是一个优雅的解决方案。

因此,第二,我models.py根据那里的解决方案重写了自己的内容,现在我更加困惑了。我正在寻找与现有数据库一起构建此Flask应用程序的最佳方法。

我查看了flask文档,但对于具有现有数据库的项目并没有真正获得任何帮助。从头开始创建东西,创建数据库以及所有东西都有很多好东西。但是我真的很困惑。

请注意,这是我的第一天工作Flask经验,但我有的经验Django,因此基本概念并不是障碍。在为该用例选择最佳方法时,我需要一些指导。详细的解释将不胜感激。详细地说,我绝对不希望有人编写所有代码并为此而spoon之以鼻,但这足以使我起步,即将该数据库无缝集成到flaskvia中sqlalchemy。注意我的数据库在MySQL。


问题答案:

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

你在其中挣扎的地方是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方法),并编写一个使用该控制器的视图。



 类似资料:
  • 问题内容: 我已经创建了一个SQLite数据库。我想将此数据库文件用于我的Android项目。我想将此数据库与我的应用程序捆绑在一起。 应用程序如何创建该数据库的访问权限并将其用作数据库,而不是创建新数据库? 问题答案: 注意: 在尝试此代码之前,请在以下代码中找到此行: 此处是你的数据库的名称。假设你在文件夹中有数据库的副本,因此,例如,如果你的数据库名称为,则的值为, 将数据库保留在资产文件夹

  • 我目前正在尝试创建一个二叉树,其中的每个节点都包含一个指向树中其他节点的unique_ptr。我的问题是一个关于设计的问题:我不完全确定如何编写一个递归函数来构建这样的树,而不调用节点中包含的指针move,以便将它们作为参数传递给下一个递归函数调用。 我有一个如下所示的函数: 我不喜欢使用shared_ptr,因为实际上没有任何共享所有权,这将大大降低函数的速度。 我确信这是一个我没有正确考虑的设

  • 问题内容: 对于这个问题,我实际上并没有太多的摆动或GUI设计方面的经验(大学中的一些WPF应用程序的水平差不多),但是我的任务是在工作中重构摆动旧式应用程序的一部分。 我被要求重构的部分围绕一个弹出窗口,该窗口可以根据特定的值对象以三种不同的格式显示。这3种不同的格式都共享一些基本字段,然后有条件地确定其他字段。负责此GUI元素的类的长度约为5k,我当时认为应该将其分为三个子类,并在基类中共享这

  • 问题内容: 我正在为NodeJS使用ExpressJS Web框架。 使用ExpressJS的人将他们的环境(开发,生产,测试…),路线等放置在。我认为这不是一个好方法,因为当您拥有大型应用程序时,app.js太大了! 我想要这个目录结构: 这是我的代码: app.js config / environment.js config / routes.js 我的代码运行良好,我认为目录的结构很漂亮。

  • 问题内容: 是否有在 Express.js 应用程序中分解和模块化文件的通用约定?还是将所有内容保存在一个文件中很普遍? 问题答案: 我的分解如下: 我使用Exports返回相关内容。例如,在模型中,我这样做: 然后,如果我需要创建一个电话号码,则非常简单: 如果我需要使用架构,那么 (假设我们正在routes文件夹中工作,需要先上一层然后再下一层模型) 编辑4 该 快递维基 具有建立在它之上的框

  • 问题内容: 我有一个看起来像这样的docker文件: 我需要在某些时候运行flask run来查看我在flask中创建的端点(在文件夹app下)。我该怎么做才能将此添加到此dockerfile? 我认为我还必须让flask运行其他应用程序,因为flask公开了其他应用程序正在收集的数据。我如何让flask调用其他应用程序并使其在后台运行? 问题答案: 我想你不想要那个入口点(也许你确实想要它,但是