flask sqlalchemy数据库操作
2018-02-02 15:02
501 查看
大多数的数据库引擎都有对应的Python 包,包括开源包和商业包。Flask 并不限制你使用何种类型的数据库包,因此可以根据自己的喜好选择使用MySQL、Postgres、SQLite、Redis、MongoDB 或者CouchDB。如果这些都无法满足需求,还有一些数据库抽象层代码包供选择,例如SQLAlchemy 和MongoEngine。你可以使用这些抽象包直接处理高等级的Python 对象,而不用处理如表、文档或查询语言此类的数据库实体。
选择数据库框架时,你要考虑很多因素。
易用性
如果直接比较数据库引擎和数据库抽象层,显然后者取胜。抽象层,也称为对象关系映射(Object-Relational Mapper,ORM) 或对象文档映射(Object-Document Mapper,ODM),在用户不知觉的情况下把高层的面向对象操作转换成低层的数据库指令。
性能
ORM 和ODM 把对象业务转换成数据库业务会有一定的损耗。大多数情况下,这种性能的降低微不足道,但也不一定都是如此。一般情况下,ORM 和ODM 对生产率的提升远远超过了这一丁点儿的性能降低,所以性能降低这个理由不足以说服用户完全放弃ORM 和ODM。真正的关键点在于如何选择一个能直接操作低层数据库的抽象层,以防特定的操作需要直接使用数据库原生指令优化。
可移植性
选择数据库时,必须考虑其是否能在你的开发平台和生产平台中使用。例如,如果你打算利用云平台托管程序,就要知道这个云服务提供了哪些数据库可供选择。可移植性还针对ORM 和ODM。尽管有些框架只为一种数据库引擎提供抽象层,但其他框架可能做了更高层的抽象,它们支持不同的数据库引擎,而且都使用相同的面向对象接口。SQLAlchemy ORM 就是一个很好的例子,它支持很多关系型数据库引擎,包括流行的MySQL、Postgres 和SQLite。
FLask集成度
选择框架时,你不一定非得选择已经集成了Flask 的框架,但选择这些框架可以节省你编写集成代码的时间。使用集成了Flask 的框架可以简化配置和操作,所以专门为Flask 开发的扩展是你的首选。
基于以上因素,推荐使用的数据库框架是Flask-SQLAlchemy
FLask-SQLAlchemy数据库URL
MySQL mysql://username:password@hostname/database
Postgres postgresql://username:password@hostname/database
SQLite(Unix) sqlite:////absolute/path/to/database
SQLite(Windows) sqlite:///c:/absolute/path/to/database
应用上下文:
95fc
在实际web开发中,在进行数据库测试,比如通过pycharm,要进行数据库验证测试,就需要设置应用上下文
然后就可以进行数据库的验证操作了。
选择数据库框架时,你要考虑很多因素。
易用性
如果直接比较数据库引擎和数据库抽象层,显然后者取胜。抽象层,也称为对象关系映射(Object-Relational Mapper,ORM) 或对象文档映射(Object-Document Mapper,ODM),在用户不知觉的情况下把高层的面向对象操作转换成低层的数据库指令。
性能
ORM 和ODM 把对象业务转换成数据库业务会有一定的损耗。大多数情况下,这种性能的降低微不足道,但也不一定都是如此。一般情况下,ORM 和ODM 对生产率的提升远远超过了这一丁点儿的性能降低,所以性能降低这个理由不足以说服用户完全放弃ORM 和ODM。真正的关键点在于如何选择一个能直接操作低层数据库的抽象层,以防特定的操作需要直接使用数据库原生指令优化。
可移植性
选择数据库时,必须考虑其是否能在你的开发平台和生产平台中使用。例如,如果你打算利用云平台托管程序,就要知道这个云服务提供了哪些数据库可供选择。可移植性还针对ORM 和ODM。尽管有些框架只为一种数据库引擎提供抽象层,但其他框架可能做了更高层的抽象,它们支持不同的数据库引擎,而且都使用相同的面向对象接口。SQLAlchemy ORM 就是一个很好的例子,它支持很多关系型数据库引擎,包括流行的MySQL、Postgres 和SQLite。
FLask集成度
选择框架时,你不一定非得选择已经集成了Flask 的框架,但选择这些框架可以节省你编写集成代码的时间。使用集成了Flask 的框架可以简化配置和操作,所以专门为Flask 开发的扩展是你的首选。
基于以上因素,推荐使用的数据库框架是Flask-SQLAlchemy
FLask-SQLAlchemy数据库URL
MySQL mysql://username:password@hostname/database
Postgres postgresql://username:password@hostname/database
SQLite(Unix) sqlite:////absolute/path/to/database
SQLite(Windows) sqlite:///c:/absolute/path/to/database
应用上下文:
95fc
在实际web开发中,在进行数据库测试,比如通过pycharm,要进行数据库验证测试,就需要设置应用上下文
from app import db, models import os ctx = app.app_context() ctx.push()
然后就可以进行数据库的验证操作了。
#查询 >>>models.User.query.all() [<User u'zhangweiwei'>, <User u'john'>] >>>db.session.execute('select * from users where username = "zhangweiwei" ') <sqlalchemy.engine.result.ResultProxy object at 0x00000000074E6BA8> >>>a = db.session.execute('select * from users where username = "test" ') >>>for i in a: ... print i ... ... (1, u'test@xxx.com', u'test', None, 0, u'test', None, None, u'2018-01-24 09:03:16.829000', u'2018-01-24 09:03:16.829000', None) #带有条件的查询 >>>x = models.User.query.filter_by(username='test') 返回的是个list需要迭代 >>>for i in x: ... print i ... ... <User u'test'> >>>models.User.query.filter_by(username='test').all() <User u'test'> >>>models.User.query.filter_by(username='test').first() <User u'test'> #插入 >>>db.session.add(UserData('uid','username','password')) >>>db.session.commit() #删除 >>>models.User.query.filter_by(username='name').delete() >>>db.session.commit() #修改 >>>models.User.query.filter_by(username='name').update({'password':'newdata'}) >>>db.session.commit()
相关文章推荐
- 那些年我们学Flask-SQLAlchemy,实现数据库操作,分页等功能
- Flask Sqlalchemy数据库操作例程
- Python使用Flask-SQLAlchemy连接数据库操作示例
- 二:flask_sqlalchemy 对数据库进行基本操作
- Flask Web 开发 数据库操作 Sqlalchemy
- flask-sqlalchemy基本操作数据库
- python Flask-SQLAlchemy操作数据库
- Flask入门之SQLAlchemy数据库连接操作(第15讲)
- Flask中之数据库框架和模型类四:再述SQLAlchemy配置,表的操作和基本操作之增删改查
- flask, SQLAlchemy, sqlite3 实现 RESTful API 的 todo list, 同时支持form操作
- Python的Flask框架中使用Flask-SQLAlchemy管理数据库的教程
- neutron使用的数据库(sqlalchemy)操作文档
- python orm框架SQLAlchemy简单应用(数据库操作)
- Flask零基础到项目实战(四)SQLAlchemy数据库(二)
- sqlalchemy数据库分层操作
- sqlalchemy和flask-sqlalchemy几种分页操作
- python数据库操作之pymysql模块和sqlalchemy模块(项目必备)
- SQLAlchemy版本回退操作(其他数据库相关bug)
- SQLAlchemy---操作数据库实例
- Flask-SQLAlchemy配置MySQL及其相关操作