单表操作

数据准备

from flask import Flask
from flask_sqlalchemy import SQLAlchemy class Config:
DEBUG = True
SQLALCHEMY_DATABASE_URI = "mysql://root:123456@127.0.0.1:3306/demo"
SQLALCHEMY_TRACK_MODIFICATIONS = False app = Flask(__name__)
app.config.from_object(Config)
db = SQLAlchemy(app) # 模型类 -》对一个表设计
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(64))
age = db.Column(db.Integer) @app.route("/", methods=["GET", "POST"])
def index():
return "成功!"
if __name__ == '__main__':
db.create_all()
app.run()

添加记录

 user = User(name="laowang", age=18)
db.session.add(user) # 逻辑添加
db.session.commit()

删除记录

 # res = User.query.filter_by(name="laowang").first()
# db.session.delete(res)
# db.session.commit()

修改记录

res = User.query.filter_by(id=3).first()
res.name="老色批"
db.session.commit()

查询记录

SQLAlchemy中关于查询分为两部分:一个是查询过滤器,一个是查询执行器。

常用的SQLAlchemy查询过滤器

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

常用的SQLAlchemy查询执行器

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

演示

@app.route("/select_book")
def select_book():
# 1.查询所有用户数据
# res = Books.query.all()
# 说明:因为这里不想条件筛选,所以不需要查询过滤器
#
# # 2.查询有多少个用户
# res = Books.query.count() # 3.查询第1个用户
res = Books.query.first() # # # 4.查询id为4的用户[3种方式]
# res = Books.query.get(1) # 使用这种方式,后面只需要填写id值
# res = Books.query.filter_by(id=4).first()
res = Books.query.filter(Books.id == 1).first()
"""
filter_by和filter的区别
格式:
filter_by: 属性=
filter: 对象.属性==
功能:
filter功能上更加强大,可以实现更多的查询方式,比如比较运算符
"""
print(res)
return "查询成功"

一对多表操作

代码准备:

from flask import Flask
from flask_sqlalchemy import SQLAlchemy class Config:
DEBUG = True
SQLALCHEMY_DATABASE_URI = "mysql://root:123456@127.0.0.1:3306/demo"
SQLALCHEMY_TRACK_MODIFICATIONS = False app = Flask(__name__)
app.config.from_object(Config)
db = SQLAlchemy(app) class Publishers(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(64))
address = db.Column(db.String(64)) def _str_(self): # print显示内容做设置
return self.name def _repr__(self): # 对列表中显示内容做设置
return self.name class Book(db.Model):
id = db.Column(db.Integer,primary_key=True)
title = db.Column(db.String(64))
price =db.Column(db.Integer)
pub_id = db.Column(db.Integer,
db.ForeignKey("publishers.id")
)
def _str_(self): # print显示内容做设置
return self.title def _repr__(self): # 对列表中显示内容做设置
return self.title
@app.route('/',methods=["GET","POST"])
def hello_world():
return "成功"
if __name__ == '__main__':
db.create_all()
app.run()

添加数据

 books=Book(id=1,title="养鬼为祸",price=50,pub_id=1)
db.session.add(books) # 逻辑添加
db.session.commit()

删除数据

es = Book.query.filter(Book.id == 1).first()
db.session.delete(es)
db.session.commit()

修改数据

es =Book.query.filter_by(id=1).first()
es.title="西游记"
db.session.commit()

查找数据

es =Publishers.query.filter(Publishers.name == "南方出版社").first()
ls = Book.query.filter(Book.pub_id == es.id).all()
print(ls)

没毛病!

欢迎转载,但请写明出处,谢谢。

python Flask 操作数据库(2)的更多相关文章

  1. Python——Flask框架——数据库

    一.数据库框架 Flask-SQLAlchemy (1)安装: pip install flask-sqlalchemy (2)Flask-SQLAlchemy数据库URL 数据库引擎 URL MyS ...

  2. flask 操作数据库(分类)

    数据库 数据库是大多数动态web程序的基础设施,只要你想把数据存下来,就离不开数据库. 这里所说的数据库指的是有存储数据的单个或多个文件组成的集合,它是一种容器,可以类比文文件柜.而人们通常使用数据库 ...

  3. MySQL---连接器(python如何操作数据库媒介,基于python语言)

    MySQL — 连接器 连接器的概念 它们往往是一类Python包,或者是一类已经写好的Python库.这些库提供了我们Python去连接数据库服务器的基本功能. ​ 既然它是一个包,那么我们首先学会 ...

  4. Python:操作数据库

    (一)      前言 本文说明如何连接Oracle.MySQL.sqlserver,以及执行sql.获取查询结果等. (二)      DB-API      DB-API阐明一系列所需对象和数据库 ...

  5. Python连接操作数据库

    步骤: 1.创建与数据库的连接对象: 2.创建游标: 3.通过游标执行语句 4.增删改需要提交(commit)数据 5.关闭连接 如: import MySQLdb   # Python通过MySQL ...

  6. python中操作数据库

    python中要操作数据库,要使用该数据库在python中对应的驱动库,本文介绍python操作mysql数据库 1.首先安装pymysql 2.导入库 3.建立连接 4.建立游标 5.发起请求 6. ...

  7. python 连接操作数据库(二)

    一.我们接着上期的博客继续对ORM框架进行补充,顺便把paramiko模块也给大家讲解一下: 1.ORM框架: 在连接操作数据库的第一个博客中也已经说了,sqlalchemy是一个ORM框架,总结就是 ...

  8. python 多线程操作数据库

    如果使用多线程操作数据库,容易引起多用户操作锁表 OperationalError: (2013, 'Lost connection to MySQL server during query') 使用 ...

  9. python 连接操作数据库(一)

    一.下面我们所说的就是连接mysql的应用: 1.其实在python中连接操作mysql的模块有多个,在这里我只给大家演示pymysql这一个模块(其实我是感觉它比较好用而已): pymysql是第三 ...

  10. python redis操作数据库方法

    Redis redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sorte ...

随机推荐

  1. 局域网内搭建CentOS PHP 环境

    首先我们找到一台已经搭建好的CentOS,IP地址我就不说啦. 我们需要用到的几个工具,一个是SecureCRT用于远程连接,还有一个用于文件上传和下载就是filezilla 准备好了之后,我们就可以 ...

  2. 玩转Google开源C++单元测试框架Google Test系列(gtest)之八 - 打造自己的单元测试框架

    转载来源:https://www.cnblogs.com/coderzh/archive/2009/04/12/1434155.html 一.前言 上一篇我们分析了gtest的一些内部实现,总的来说整 ...

  3. iptables基本使用举例

    一.链的基本操作 1.清除所有的规则. 1)清除预设表filter中所有规则链中的规则. # iptables -F 2)清除预设表filter中使用者自定链中的规则. #iptables -X #i ...

  4. 面试突击91:MD5 加密安全吗?

    MD5 是 Message Digest Algorithm 的缩写,译为信息摘要算法,它是 Java 语言中使用很广泛的一种加密算法.MD5 可以将任意字符串,通过不可逆的字符串变换算法,生成一个唯 ...

  5. 『现学现忘』Git基础 — 36、标签tag(一)

    目录 1.标签介绍 2.列出标签 3.创建标签 (1)标签的分类 (2)附注标签 (3)轻量标签 4.后期打标签 1.标签介绍 软件的某个发行版本所对应的,其实就是软件开发过程中,某一个阶段的最后一次 ...

  6. Java程序员必会Synchronized底层原理剖析

    synchronized作为Java程序员最常用同步工具,很多人却对它的用法和实现原理一知半解,以至于还有不少人认为synchronized是重量级锁,性能较差,尽量少用. 但不可否认的是synchr ...

  7. 后端框架学习1-----Spring

    Spring学习笔记 spring全家桶:https://www.springcloud.cc/spring-reference.html spring中文文档:http://c.biancheng. ...

  8. 齐博x1会员中心菜单权限显示

    会员中心的菜单可以通过后台设置用户组权限进行显示或者是隐藏.比如商城里的菜单如下: 菜单文件是:\application\shop\member_menu.php return array( 'cms ...

  9. Windows7下驱动开发与调试体系构建——2.R3与R0的通信示例

    目录/参考资料:https://www.cnblogs.com/railgunRG/p/14412321.html 在阅读本节前,建议先阅读<Windows内核安全与驱动开发>第五章内容, ...

  10. Programiranje 方法记录

    [COCI2017-2018#3] Programiranje 题面翻译 题目描述 Little Leticija正在准备编程考试.虽然她已经解决了很多任务,但还有一个任务尚未解决,所以她正在向你寻求 ...