SQLAlchemy简介

大多数的关系型数据库引擎(比如 MySQL、Postgres 和 SQLite)都有对应的 Python 包,我们可以使用这些数据库引擎提供的 Python 包,通过编写SQL语句来实现数据的持久化操作。但是我们通常是面向对象编程,习惯操作对象。所以在对数据库的操作中,我们通常会使用一些ORM(对象关系映射框架)来完成数据的持久化操作,像Java中的hibernate、MyBatis等。Python 中最广泛使用的 ORM 框架就是 SQLAlchemy,它是一个很强大的关系型数据库框架,不仅支持高层的 ORM,也支持使用低层的 SQL 操作。

对于SQLAlchemy,我们在上一篇Flask实现用户登录功能中已经有使用,不过没有具体介绍,在这一篇中主要介绍一下Flask-SQLAlchemy的一些基本使用,以实例介绍为主。

例如,我们对上一篇中使用的数据表tb_user插入一条信息

#encoding:utf-8
#!/usr/bin/env python
from flask_sqlalchemy import SQLAlchemy
from flask import Flaskapp = Flask(__name__)app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:1011@localhost/rl_project?charset=utf8'
db = SQLAlchemy(app)class user(db.Model):id = db.Column('id', db.Integer, primary_key=True)accountNumber = db.Column(db.String(200), unique=True)password = db.Column(db.String(50), unique=True)name = db.Column(db.String(20), unique=True)__tablename__ = 'tb_user'def __init__(self, id=None, account_number=None, password=None, name="admin"):self.id = idself.accountNumber = account_numberself.password = passwordself.name = namedef get_id(self):return unicode(self.id)def __repr__(self):return '<User %r>' % self.nametest_user = user(7, '123', '123', 'xiaozhi')
db.session.add(test_user)
db.session.commit()

运行以上的代码,我们查看数据表

我们看到昵称为xiaozhi的用户已经成功插入表中。

对以上代码做一些解释

1、引入SQLAlchemy插件:from flask_sqlalchemy import SQLAlchemy。

2、app 应用配置项 SQLALCHEMY_DATABASE_URI 指定了 SQLAlchemy 所要操作的数据库,这里我们使用的是MySQL,配置信息:mysql+pymysql://root:1011@localhost/rl_project?charset=utf8

mysql+pymysql指定配置数据库类型为MySQL;root为数据库名;1011是数据库密码;@localhost是数据库IP地址,这里是本地数据库;rl_project?charset=utf是数据库名并指定编码。

3、db = SQLAlchemy(app)表示创建一个SQLAlchemy实例。

4、 __tablename__ = 'tb_user'指定对应的数据表。

5、class user(db.Model)则实现了对象关系映射,user中的属性对应表字段,之后我们所有操作就不用理会表中的字段,而是直接对user属性进行操作。

列举SQLAlchemy操作数据库方法

新增数据

新增一条用户信息:

test_user = user(7, '123', '123', 'xiaozhi')
db.session.add(test_user)
db.session.commit()
查询数据
查询id为7的用户:
db.session.query(user).filter_by(id=7).first()

或者

db.session.query(user).filter(user.id == 7).first()

查询所有注册的用户:

db.session.query(user).all()
更新数据

将id为“7”的用户昵称修改为“linda”:

user = db.session.query(user).filter_by(id=7).first()
user.name = 'linda'
db.session.commit()
删除数据

将id为“7”的用户删除:

user = db.session.query(user).filter_by(id=7).first()
db.session.delete(user)
db.session.commit()

以上介绍了SQLAlchemy的一些基本操作,就介绍这些了。

使用Flask-SQLAlchemy插件操作MySQL相关推荐

  1. Flask使用Flask-SQLAlchemy操作MySQL数据库

    https://www.jianshu.com/p/6ae0d30a5539 前言: Flask-SQLAlchemy是一个Flask扩展,简化了在Flask程序中使用SQLAlchemy的操作.SQ ...

  2. python3 flask sqlalchemy 数据库操作

    数据的查询 all():查询全部的数据,其结果是一个列表,每一个元素都是一个对象students = Student.query.all()过滤查询:第一种:filter,结果是baseQuery o ...

  3. 使用python ORM来操作MySQL

    昨天的博客是用MySQL官方的MySQL-connector驱动来完成数据库的连接和使用,但只适用于小项目的操作,当项目规模增加时,代码会越来越复杂,维护成本也越来越高,此时需要一个更好的设计模式.即 ...

  4. flask mysql orm_Flask笔记:数据库ORM操作MySQL+pymysql/mysql-python+SQLAlchemy/Flask-SQLAlchemy...

    Python中使用sqlalchemy插件可以实现ORM(Object Relationship Mapping,模型关系映射)框架,而Flask中的flask-sqlalchemy其实就是在sqla ...

  5. flask使用SQLAlchemy操作mysql

    2019独角兽企业重金招聘Python工程师标准>>> 注意:看这篇博客需要先看我之前写的一篇博客,在 https://my.oschina.net/zhuangweihong/bl ...

  6. flask 操作mysql的两种方式-sqlalchemy操作

    flask 操作mysql的两种方式-sqlalchemy操作二.ORM sqlalchemy操作#coding=utf-8 # model.pyfrom app import dbclass Use ...

  7. Python操作MySQL之SQLAlchemy

    Python操作MySQL之SQLAlchemy 原文:https://www.cnblogs.com/ccorz/p/5711955.html SQLAlchemy是Python编程语言下的一款OR ...

  8. python mysql数据库的高级应用_Python之路第十二天,高级(5)-Python操作Mysql,SqlAlchemy...

    Mysql基础 一.安装 Windows: 1.下载 http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.31-winx64.zip 2.解压 ...

  9. python学习之flask sqlalchemy介绍和使用 表操作增删查改

    flask sqlalchemy介绍和使用 表操作增删查改 内容详细 1 sqlalchemy介绍和快速使用 1.1 介绍 # SQLAlchemy是一个基于Python实现的ORM框架# djang ...

最新文章

  1. 阿里原来是这么干的!Spring Boot 五种热部署方式
  2. 模拟播放器倒计时效果
  3. Redis在C#中的使用及Redis的封装
  4. 如何在不使用任何图像或跨度标签的情况下通过CSS在UL / LI html列表中设置子弹颜色[复制]
  5. 链接oracle spatial,oracle spatial初试
  6. 深度学习与机器学习到底什么关系?
  7. ACL20 | 让笨重的BERT问答匹配模型变快!
  8. java观察者_Java中的观察者模式
  9. Python3 离线安装第三方包
  10. DPDK内存篇(二): 深入学习 IOVA
  11. OpenShift 4 之Service Mesh教程(1)- 创建ServiceMesh环境,部署Istio的微服务
  12. mysql io队列_网易视频云经验分享MYSQL 5.5 的IO控制
  13. 重做《机房收费系统》——概要设计(UI)
  14. matlab中的常用符号,matlab特殊符号表
  15. 计算机主机开机为什么显示器不开,电脑开机后显示器不亮怎么办?电脑开机后显示器没反应的解决办法...
  16. 华师大学 计算机 调剂,2020华南师范大学调剂公告
  17. python opencv合并图片
  18. Java使用poi-tl生成word文档
  19. MySQL必知必会6
  20. 小米公司不管老用户的手机了。小米1

热门文章

  1. 腾讯又双叒涨工资了!平均月薪已达7.27万?
  2. 华为鸿蒙OS发布!余承东:如果安卓不可用,随时启用鸿蒙
  3. 小米9来袭 雷军微博疯狂暗示:有望MWC亮相?
  4. SIP应答代码【ZT】
  5. yum安装 vs 源码编译安装
  6. java的outputstream_Java OutputStream类
  7. 常用加密算法之非对称加密算法
  8. C++ 继承的构造与析构
  9. python形式参数和实际参数_python学习笔记3:函数和参数
  10. python断点调试出现问题_Python错误、调试