flask-sqlalchemy和sqlalchemy(flask-sqlalchemy使用最需要注意的地方)

友情提示

除非你开发的用到和数据库交互都是在web接口的情况下,否则别用flask-sqlalchemy,直接用sqlalchemy

有这样一个比喻,很形象
sqlalchemy是一群猴子,而flask-sqlalchemy则是其中的一只猴子
为什么这么说,因为flask-sqlalchemy是简化版的sqlalchemy

介绍

二者的使用方式很像,只不过sqlalchemy是需要自己创建引擎,连接数据库,去操作数据库,sqlalchemy也是一种数据库,是一个关系型数据库框架,是python中最著名的ORM(Object Relationship Mapping)框架。ORM:对象关系映射。即将用户定义的Python类与数据库表相关联,并将这些类(对象)的实例与其对应表中的行相关联。说白点,就是python和数据库之间的中转站,通过sqlalchemy可以不用直接去操作sql数据库,免去了写原生sql的复杂操作。让python代码可以更快更直接的操作数据库。这点和pymysql性质很像 因为flask-sqlalchemy是sqlalchemy的简化版,所有也具有该性质

注意点及原因

但flask-sqlalchemy是基于flask框架的,flask是一个web Serve服务框架,是提供http接口的框架,flask-sqlalchemy基于flask,简化了sqlalchemy建立引擎,操作引擎的一些操作,更加符合了flask的快捷性质,但问题也出现了,通过flask-sqlalchemy建立的sql连接,只能用于web Serve操作,因为创建时通过app=flask(__name__),所以建立的models也只能在web Serve接口中使用,如果想要在接口之外使用,会报未启动服务的错误。如下

sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such table:

app = Flask(__name__)
app.config.from_object(Appconfig)
app_test_request_context()
db = SQLAlchemy()
db.init_app(app)

这段代码就很好的展示了flask-sqlalchemy的局限性了。通过app建立连接,则与数据库的操作则只能在flask注册过的路由的函数或这类中使用,在别的地方使用,则没有建立关联连接,也就无法使用,所以,如果对mysql的使用仅仅是用于web serve中,则用flask-sqlalchemy会更方便,否则用sqlalchemy

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值