一、数据库框架 Flask-SQLAlchemy

  (1)安装: pip install flask-sqlalchemy

  (2)Flask-SQLAlchemy数据库URL

数据库引擎 URL
MySQL mysql://username:password@hostname/database
Postgres postgresql://username:password@hostname/database
SQLite(Unix) sqlite:////abslute/path/to/database
SQLite(Windows) sqlite:///c:/absolute/path/tp/database

二、配置数据库

from flask.ext.sqlalchemy import SQLAlchemy
basedir = os.path.abspath(os.path.dirname(__file__)
app = Flask(__name__)
app.config['SQLACHEMY_DATABASE_URI'] = \'sqlite:///' + os.path.join(basedir,'data.sqlite')
app.config['SQLACHEMY_COMMIT_ON_TEARDOWN'] = True
db = SQLAlchemy(app)

三、定义模型

**roles表和user表定义模型Role和User

class Role(db.Model):
#数据库中使用的表名
__tablenaame__ = 'roles'
id = db.Column(db.Integer, primary_key =True)
name = db.column(db.String(64),unique = True)
def __repr__(self):
return <Role %r>' % self.name class User(db.Model):
__tablenaame__ = 'users'
id = db.Column(db.Integer, primary_key =True)
username = db.column(db.String(64),unique = True,index = True)
def __repr__(self):
return <User %r>' % self.username

  (2)最常使用的SQLAlchemy列选项

选项名 说明
primary_key 主键,经常是ID
unique 不允许出现重复的值
index 创建索引,提升查询效率
nullable 允许空值
default 定义默认值

四、关系

  (1)一对多关系

class Role(db.Model):
#数据库中使用的表名
'''
__tablenaame__ = 'roles'
id = db.Column(db.Integer, primary_key =True)
name = db.column(db.String(64),unique = True)
'''
users = db.relationship('User',backref = 'role')
'''
def __repr__(self):
return <Role %r>' % self.name
'''
class User(db.Model):
'''
__tablenaame__ = 'users'
id = db.Column(db.Integer, primary_key =True)
username = db.column(db.String(64),unique = True,index = True)
'''
role_id = db.Column(db.Integer,db.ForeignKey('role.id'))
'''
def __repr__(self):
return <User %r>' % self.username
'''

  (2)常用的关系项

选项 说明
backref 在关系的另一个模型中添加反向引用
primaryjoin 明确两个模型中间的连接条件
lazy 指定加载相关记录
uselist 设置Fales,不使用列表
order_by 指定关系中记录的排序方式
secondary 指定多对多关系表的名字
secondaryjoin 无法自行决定时,指定多堆垛关系的耳机连接条件

**lazy可选值select(首次访问时需要加载),immediate(源对象加载后就加载),joined(加载记录,单使用连接),subquery(立即加载,单使用子查询),noload(永不加载)和dynamic(不加载记录,单提供加载记录查询)

**db.relationship(),把uselist设置为False,把“多”变成“一”

五、数据库操作

  (1)创建表

from hello import db
db.create_all()

**创建一个名字为data.sqlite

  (2)插入行

db.session.all_all([admin_role,mod_role,user_role,user_john,user_susan,user_david])
#提交数据
db.session.commit()

**数据回滚 db.session.rollback()

  (3)修改行

#把"Admin" 角色重命名为"Administrator"
admin_role.name = 'Administrator'
db.session.add(admin_role)
db.session.commit()

  (4)删除行

db.session.delete(mod_role)
db.session.commit()

  (5)查询行

 

  5.2常用的查询过滤器

过滤器 说明
filter 把过滤器添加到原查询上,返回一个新查询
filter_by 把等值过滤器添加到原查询上,返回一个新查询
limit 使用指定的值限制原查询返回的结果数量,返回一个查询
offset 偏移原查询返回的结果,返回一个新查询
order_by 根据指定条件对原查询结果进行排序,返回一个新查询
group_by 根据指定条件对原查询结果进行分组,返回一个新查询

  5.3常用查询执行函数

方法 说明
all 以列表形式返回查询的所有结果
first 返回查询的第一个结果,没有结果返回None
first_or_404 返回查询的第一个结果,没有结果,返回404错误
get 返回指定主键对应的行,没有结果返回None
get_or_404 返回指定主键对应的行,没有结果,返回404错误
count 返回查询的结果的数量
paginate 返回Paginate对象,它包含指定范围内容的结果

六、在视图函数中操作数据库

七、集成Python shell  ?

  为shell命令添加一个上下文

def make_shell_context():
return dict(app=app,db=db,User=User,Role=Role)
manager.add_command("shell",Shell(make_context=make_shell_context)

**make_shell_context函数注册了程序,数据库实例以及模型,因此这些对象能直接导入shell

八、数据库迁移(Flask-Migrate)

  (1)安装 :  pip install flask-migrate

  (2)配置Flask-Migrate

form flask.ext.migrate import Migrate,MigrateCommand
#...
migrate = Migrate(app,db)
manager.add_command('db',MigrateCommand)

  (2)迁移脚本

    upgrade()函数把迁移中的改动应用到数据库中

    downgrade()函数责将改动删除

    自动迁移脚本: python hello.py db migrate -m "initial migration"

九、更新数据库

  python hello.py db upgrade

Python——Flask框架——数据库的更多相关文章

  1. python flask框架 数据库的使用

    #coding:utf8 from flask import Flask from flask_sqlalchemy import SQLAlchemy app = Flask(__name__) # ...

  2. #3使用html+css+js制作网页 番外篇 使用python flask 框架 (II)

    #3使用html+css+js制作网页 番外篇 使用python flask 框架 II第二部 0. 本系列教程 1. 登录功能准备 a.python中操控mysql b. 安装数据库 c.安装mys ...

  3. Linux ubantu中安装虚拟/使用环境virtualenv以及python flask框架

    今天学习了python flask框架的安装过程以及使用案例,感觉网上讲的东西都没有从我们这种初学者的角度去考虑(哈哈),最后还是奉上心得: 1.安装virtualenv $ sudo apt-get ...

  4. python flask框架学习——开启debug模式

    学习自:知了课堂Python Flask框架——全栈开发 1.flask的几种debug模式的方法 # 1.app.run 传参debug=true app.run(debug=True) #2 设置 ...

  5. python flask框架学习(二)——第一个flask程序

    第一个flask程序 学习自:知了课堂Python Flask框架——全栈开发 1.用pycharm新建一个flask项目 2.运行程序 from flask import Flask # 创建一个F ...

  6. python flask框架学习(一)——准备工作和环境配置与安装

    Flask装备: 学习自:知了课堂Python Flask框架——全栈开发 1.Python版本:3.6 2.Pycharm软件: 3.安装虚拟环境: (1)安装virtualenv: pip ins ...

  7. #3使用html+css+js制作网页 番外篇 使用python flask 框架 (I)

    #3使用html+css+js制作网页 番外篇 使用python flask 框架(I 第一部) 0. 本系列教程 1. 准备 a.python b. flask c. flask 环境安装 d. f ...

  8. Python Flask框架路由简单实现

    Python Flask框架路由的简单实现 也许你听说过Flask框架.也许你也使用过,也使用的非常好.但是当你在浏览器上输入一串路由地址,跳转至你所写的页面,在Flask中是怎样实现的,你是否感到好 ...

  9. python Flask框架mysql数据库配置

    我是一个没有笔记习惯的低级程序员,但是我还是喜欢编程,从小学就开始跟着玩电脑,对抓鸡,ddos,跳板刷钻开始了自己的IT 旅程,之后学习了各种语言,但是可惜都不没有达到精通,都是略懂一二,现在想把Py ...

随机推荐

  1. 02 python初学 (数字运算 逻辑运算)

    运算: 5/2 -> 2.5 5//2 -> 2  取整 5%2 -> 1  取余 2**10 -> 1024 指数运算 逻辑运算符: and : 条件1 and 条件2 no ...

  2. oracle SQL 执行进度

    SELECT SS.USERNAME, SS.SID, SS.SERIAL#, SS.MACHINE, SS.PROGRAM, SL.OPNAME, SL.TARGET, SL.START_TIME, ...

  3. Linux 内核协议栈 学习资料

    终极资料 1.<Understanding Linux Network Internals> 2.<TCP/IP Architecture, Design and Implement ...

  4. 环境部署(四):Linux下查看JDK安装路径

    在安装好Git.JDK和jenkins之后,就需要在jenkins中进行对应的设置,比如在全局工具配置模块,需要写入JDK的安装路径. 这篇博客,介绍几种常见的在Linux中查看JDK路径的方法... ...

  5. Linux并发与同步专题 (4) Mutex互斥量

    关键词:mutex.MCS.OSQ. <Linux并发与同步专题 (1)原子操作和内存屏障> <Linux并发与同步专题 (2)spinlock> <Linux并发与同步 ...

  6. Recurrent Neural Network[SRU]

    0.背景 对于如机器翻译.语言模型.观点挖掘.问答系统等都依赖于RNN模型,而序列的前后依赖导致RNN并行化较为困难,所以其计算速度远没有CNN那么快.即使不管训练的耗时程度,部署时候只要模型稍微大点 ...

  7. 深入浅出:HTTP/2

    上篇文章深入浅出:5G和HTTP里给自己挖了一根深坑,说是要写一篇关于HTTP/2的文章,今天来还账了. 本文分为以下几个部分: HTTP/2的背景 HTTP/2的特点 HTTP/2的协议分析 HTT ...

  8. .NetCore实践爬虫系统(一)解析网页内容

    爬虫系统的意义 爬虫的意义在于采集大批量数据,然后基于此进行加工/分析,做更有意义的事情.谷歌,百度,今日头条,天眼查都离不开爬虫. 今日目标 今天我们来实践一个最简单的爬虫系统.根据Url来识别网页 ...

  9. Linux:一位猫奴的意外逆袭

    作者:Vamei,严禁任何形式转载. 1991年年中,林纳斯·托瓦兹(Linus Torvalds)在自己房间里敲着键盘.他全神贯注地盯着14寸的黑色屏幕,都没感觉到自己的小猫Randi在扒自己的裤腿 ...

  10. 配置Apache虚拟主机

    实验环境 一台最小化安装的CentOS 7.3虚拟机 配置基础环境 1. 安装apache yum install -y httpd 2. 建立虚拟主机的根目录 mkdir /var/wwwroot ...