Flask实例教程六

Flask-SQLALchemy 是一个给你的应用添加 SQLALchemy 支持的 Flask 扩展。SQLALchemy
是Python语言的SQL工具包及对象关系映射(ORM)工具,使用MIT许可证发行,提供能兼容众多数据库(如
SQLite、MySQL、Postgres、Oracle、MS-SQL、SQLServer 和 Firebird)的企业级持久性模型。

一、为你的Flask应用加载Flask-SqlAlchemy扩展

from flask import Flask
from flask.ext.sqlalchemy import SQLAlchemy
 
app = Flask(__name__)
app.config[‘SQLALCHEMY_DATABASE_URI‘] = ‘sqlite:////tmp/test.db‘
db = SQLAlchemy(app)  #这个就是你以后操作数据库的对象实例了

SQLALCHEMY_DATABASE_URI格式实例:

postgresql://scott:[email protected]/mydatabase
mysql://scott:[email protected]/mydatabase
oracle://scott:[email protected]:1521/sidname
sqlite:////absolute/path/to/foo.db        #注意:有3个斜杠+路径

二、建立数据库模型和初始化数据库

建立数据库模型:

import hashlib
from app import db  #在数据库模型文件中导入上面建立的db对象
 
class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)  # id
    username = db.Column(db.String(80), unique=True)
    email = db.Column(db.String(320), unique=True)
    password = db.Column(db.String(32), nullable=False)
 
    def __init__(self, username, email, password):
        self.username = username
        self.email = email
        self.password= hashlib.md5(password)
 
    def __repr__(self):
        return "<User ‘{:s}‘>".format(self.username)

初始化数据库也特别简单,只需要调用 db.create_all() 函数就可以了。

if __name__ == ‘__main__‘:
    db.create_all()

三、插入数据

u = User(username=‘peter‘, email=‘[email protected]‘, password=‘123456‘)
db.session.add(u)  #插入数据
db.session.commit()  #只有提交事务了,才可以获取(u.id)数据的ID值。

四、查询数据

用主键获取数据:

User.query.get(1)
<User u‘admin‘>

通过一个精确参数进行反查:

peter = User.query.filter_by(username=‘peter‘).first()  #注意:精确查询函数query.filter_by(),是通过传递参数进行查询;其他增强型查询函数是query.filter(),通过传递表达式进行查询。
print(peter.id)  #如果数据不存在则返回None

模糊查询:

User.query.filter(User.email.endswith(‘@example.com‘)).all()
[<User u‘admin‘>, <User u‘guest‘>]

逻辑非1:

peter = User.query.filter(User.username != ‘peter‘).first()
print(peter.id)

逻辑非2:

from sqlalchemy import not_
peter = User.query.filter(not_(User.username==‘peter‘)).first()
print(peter.id)

逻辑与:

from sqlalchemy import and_
peter = User.query.filter(and_(User.username==‘peter‘, User.email.endswith(‘@example.com‘))).first()
print(peter.id)

逻辑或:

from sqlalchemy import or_
peter = User.query.filter(or_(User.username != ‘peter‘, User.email.endswith(‘@example.com‘))).first()
print(peter.id)

五、查询数据加工

排序和限制函数可以跟在query或filter后面。
排序:

User.query.order_by(User.username)  #嘿嘿,你用哪个字段作为排序参考呢?
[<User u‘admin‘>, <User u‘guest‘>, <User u‘peter‘>]

限制返回的数目:

User.query.limit(1).all()
[<User u‘admin‘>]

六、查询数据返回

返回查询到的第一个对象:

r = User.query.first()
print(r)

返回所有查询到的对象:

r = User.query.all()

print(r)

七、删除数据

u = User.query.first()
db.session.delete(u)  #删除数据和插入数据一样简单,但必须是通过查询返回的对象。
db.session.commit()

八、更新数据

u = User.query.first()
u.username = ‘guest‘  #更新数据和变量赋值那么简单,但必须是通过查询返回的对象。
db.session.commit()

转载自http://www.itwhy.org/%E6%95%B0%E6%8D%AE%E5%BA%93/flask-sqlalchemy-%E5%AD%A6%E4%B9%A0.html

Flask实例教程六

时间: 2024-10-15 11:17:46

Flask实例教程六的相关文章

Flask实例教程五

一:Flask中的g对象 Flask中的g对象是个很好的东西,主要用于在一个请求的过程中共享数据.可以随意给g对象添加属性来保存数据,非常的方便,下面的代码是一个使用g对象的例子.下面的这个例子会使用random随机产生一个0~9的整数,并使用g.x保存并记录debug日志: # encoding=utf-8 from flask import Flask from flask import g import random app = Flask(__name__) @app.before_re

Flask实例教程四

一:Flask处理请求和回复 Flask和Werkzeug提供了request和response对象去处理请求和回复的数据.Flask通过@app.route包裹的函数(后面我们称这个函数叫做视图函数),来响应请求. 视图函数返回的值可以分为三类: string:返回的就是普通的字符串. 一个response的实例:具备HTTP属性的一个响应的对象的实例.通过make_respone来构建 一个元组:(string,status)或者(string,status,http_headers)这样的

Flask实例教程三

一:Flask中url的工作方式 # encoding=utf-8 from flask import Flask app = Flask(__name__) @app.route("/task/") def task_list():     return "List of all task" @app.route("/task/<int:task_id>/") def task_detail(task_id):     return

React 入门实例教程

React 入门实例教程 作者: 阮一峰 日期: 2015年3月31日 现在最热门的前端框架,毫无疑问是 React . 上周,基于 React 的 React Native 发布,结果一天之内,就获得了 5000 颗星,受瞩目程度可见一斑. React 起源于 Facebook 的内部项目,因为该公司对市场上所有 JavaScript MVC 框架,都不满意,就决定自己写一套,用来架设 Instagram 的网站.做出来以后,发现这套东西很好用,就在2013年5月开源了. 由于 React 的

Swift中文教程(六)--枚举和结构

原文:Swift中文教程(六)--枚举和结构 Enumerations 枚举 使用 enum 来创建一个枚举.跟Classes(类)和其他类型的命名方式一样,枚举也可以有Method(方法). 1 enum Rank: Int { 2 case Ace = 1 3 case Two, Three, Four, Five, Six, Seven, Eight, Nine, Ten 4 case Jack, Queen, King 5 func simpleDescription() -> Stri

flask 大型教程项目优化版(1):Hello World

Hello World 作者背景 作者是一个使用多种语言开发复杂程序并且拥有十多年经验的软件工程师.作者第一次学习 Python 是在为一个 C++ 库创建绑定的时候. 除了 Python,作者曾经用 PHP, Ruby, Smalltalk 甚至 C++ 写过 web 应用.在所有这些中,Python/Flask 组合是作者认为最为自由的一种. 应用程序简介 作为本教程的一部分–我要开发的应用程序是一个极具特色的微博服务器,我称之为 microblog . 我会随着应用程序的不断地进展将涉及到

手把手教你用动软.NET代码生成器实例教程

动软实战攻略 手把手教你用动软 文档编号:20110421 版权所有 © 2004-2011 动软 在线帮助:http://help.maticsoft.com 目录   一.        产品介绍 二.        下载安装 三.        注册数据库连接 四.        查看数据库信息 五.        新建整个项目 六.        批量代码生成 七.        单表代码生成 八.        父子表代码生成(事务生成) 九.        代码生成规则设置 十.  

Unity-2017.2官方实例教程Roll-a-ball(二)

声明: 本文系转载,由于Unity版本不同,文中有一些小的改动,原文地址:http://www.jianshu.com/p/97b630a23234 上一节Unity-2017.2官方实例教程Roll-a-ball(一)我们讲到了: 一.如何创建一个新项目(Project) 二.如何创建一个新的游戏场景(Scene) 三.如何添加基本的游戏对象(GameObject) 四.如何添加灯光(Light) 五.如何给游戏对象添加脚本(Script) 如果运行过游戏的朋友就会发现一个问题,虽然我们可以控

Unity-2017.3官方实例教程Space-Shooter(二)

由于初学Unity,写下此文作为笔记,文中难免会有疏漏,不当之处还望指正. Unity-2017.3官方实例教程Space-Shooter(一) 章节列表: 一.创建小行星Prefab 二.创建敌机和敌机子弹Prefab 三.创建游戏控制器 四.添加音效 五.对象回收 六.创建计分板 一.创建小行星Prefab a.创建一个空对象,重命名为Asteroid_01,在Models文件夹下找到prop_asteroid_01模型,将模型拖拽到Asteroid_01上,使其成为Asteroid_01的