python学习-使用Flask-SQLAlchemy插件操作MySQL

2019 Java 开发者跳槽指南.pdf (吐血整理)….>>>
大多数的关系型数据库引擎(比如 MySQL、Postgres 和 SQLite)都有对应的 Python 包,我们可以使用这些数据库引擎提供的 Python 包,通过编写SQL语句来实现数据的持久化操作。但是我们通常是面向对象编程,习惯操作对象。所以在对数据库的操作中,我们通常会使用一些ORM(对象关系映射框架)来完成数据的持久化操作,像Java中的hibernate、MyBatis等。Python 中最广泛使用的 ORM 框架就是 SQLAlchemy,它是一个很强大的关系型数据库框架,不仅支持高层的 ORM,也支持使用低层的 SQL 操作。
对于SQLAlchemy,我们在上一篇Flask实现用户登录功能中已经有使用,不过没有具体介绍,在这一篇中主要介绍一下Flask-SQLAlchemy的一些基本使用,以实例介绍为主。
例如,我们对上一篇中使用的数据表tb_user插入一条信息
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#encoding:utf-8
#!/usr/bin/env python
from flask_sqlalchemy import SQLAlchemy
from flask import Flask
 
 
app = 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 = id
        self.accountNumber = account_number
        self.password = password
        self.name = name
 
    def get_id(self):
        return unicode(self.id)
 
    def __repr__(self):
        return '<User %r>' % self.name
 
 
test_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操作数据库方法
新增数据
新增一条用户信息:
1
2
3
test_user = user(7, '123', '123', 'xiaozhi')
db.session.add(test_user)
db.session.commit()
查询数据
查询id为7的用户:
1
db.session.query(user).filter_by(id=7).first()
或者
1
db.session.query(user).filter(user.id == 7).first()
查询所有注册的用户:
1
db.session.query(user).all()
更新数据
将id为“7”的用户昵称修改为“linda”:
1
2
3
user = db.session.query(user).filter_by(id=7).first()
user.name = 'linda'
db.session.commit()
删除数据
将id为“7”的用户删除:
1
2
3
user = db.session.query(user).filter_by(id=7).first()
db.session.delete(user)
db.session.commit()
以上介绍了SQLAlchemy的一些基本操作