可以在一个Web应用程序的一个后端中使用2个不同的框架吗?

时间:2020-10-30 06:23:18

标签: python mysql sql-server flask backend

我是一名11年级学生,正在与队友一起学习如何构建Web应用程序。目前,我们正在建立一个网站,显示学校的时间表(还显示学生的成绩),并帮助用户创建他们的待办事项清单,当然,该网站为像我这样的学生提供服务。在网络的后端,我们使用Python作为主要语言,使用Flask作为框架,并使用MySQL操作数据库。现在,一切正常,我们正在尝试为托管网络的人员创建类似管理界面的内容。具体来说,在这里,教师可以插入学生的成绩,甚至可以调整学校的时间表。问题是,我们正在学习如何使用Flask Admin对该功能进行编码,并且我们发现该技术仅与SQL Server兼容。但是,我们对MySQL有更好的了解,因此我们可以创建多个任务,相反,我们不知道如何使用SQL Server创建这些功能。现在我有两个主要问题:

  1. 我们可以在Web后端使用2个不同的SQL吗?这是我们知道的最快方法,但是我们必须学习如何使用SQL Server。

  2. 我们可以在Web后端中使用2个不同的Python后端框架吗?我们尚未搜索要使用的框架,因为我们不知道是否有可能这样做。

除了摆脱MySQL并使用SQL Server之外,我们不知道任何其他方法可以解决此问题。但是,这不是我们喜欢的方式,我们希望回答这两个问题。如果我们知道有什么问题,请直接评论以告知我们,我们非常欢迎任何其他解决方案。感谢您的回答!

3 个答案:

答案 0 :(得分:0)

直接来自flask-admin文档https://flask-admin.readthedocs.io/en/latest/advanced/#using-different-database-backends

使用SQLAlchemy以外的其他数据库后端... 五个不同的后端供您选择,具体取决于哪个 您要用于应用程序的数据库。但是,如果您 需要实现自己的数据库后端,请看添加A 模型后端。

如果您不知道从哪里开始,但您熟悉关系 数据库,那么您可能应该考虑使用 SQLAlchemy 它 是功能齐全的工具包,支持 SQLite,PostgreSQL, MySQL ,Oracle和MS-SQL等。一旦您拥有大量数据,并且之间存在相当多的关系,它就会真正发挥作用 您的数据模型。如果您想跟踪空间数据,例如 纬度/经度点,您也应该查看GeoAlchemy。

关于原始问题,可以在Web应用程序的后端使用两个不同的框架。一种方法是设置反向代理服务器(请参阅https://www.nginx.com/resources/glossary/reverse-proxy-server/#:~:text=A%20reverse%20proxy%20server%20is,traffic%20between%20clients%20and%20servers.),但我建议在执行此操作之前先提供SQLAlchemy。

答案 1 :(得分:0)

您为什么认为flask-admin与SqlServer绑定? Flask(和flask-admin)可以处理与各种数据库的不同连接:

我的猜测是您当前正在使用SqlAlchemy。如here所述,您可以使用不同的后端:

URL的字符串形式为dialect[+driver]://user:password@host/dbname[?key=value..],其中dialect是数据库名称,例如 mysql,oracle,postgresql等,驱动程序的名称为DBAPI,例如 psycopg2,pyodbc,cx_oracle,等。 另外,URL可以是URL的实例。
https://docs.sqlalchemy.org/en/13/core/engines.html#sqlalchemy.create_engine

有关引擎here的更多信息

Flask-admin是数据库表上的 admin 视图-您无法在“不同”的数据库上运行它,因此应修改该表。它需要访问您要修改的数据库表,因此您不能在MS上运行“ admin”,而在另一个数据库(-连接)上运行“您的数据后端”。


还有其他需要考虑的事情:

MS-(T-)Sql和MySql是基础结构的选择,在语言上它们是紧密相关的,因此应该有可能使MySql知识适应T-SQL语法。选择SqlServer可能会迫使您获得许可-以及附带费用的afaik(在校内免费注册或作为天价订阅,学校可能免费,也可能不免费(不知道-但您应该检查一下)。

这听起来像是一个雄心勃勃的学校计划-根据您的居住地,私有数据保护法会发挥作用,尤其是考虑到将姓名与具有年级的日程表联系起来,这将需要您实施更多的工作以符合要求。

答案 2 :(得分:0)

对于第一个问题,我检查了flask-admin文档,发现该框架已包含serval内置的ORM库,即SQLAlchemyMongoEnginepymongo和{{ 1}}。这意味着您可以直接从Peewee包中导入ORM库,并使用它来访问数据库。对于您的情况,在使用SQL数据库时应寻找flask-adminSQLAlchemy支持SQL Server和MySQL。

官方文档中的“添加模型视图”部分也提到了这一点: https://flask-admin.readthedocs.io/en/latest/introduction/#getting-started

对于第二个问题,从技术上讲不可能在一个后端应用程序中应用两个不同的框架。