Flask操作Mysql数据库
前言
最近在学习python的web框架Flask,在了解Flask操作数据库的时候,刚开始是想用Flask-SQLAlchemy这个扩展,但是一直由于版本等其他原因操作失败,今天查了以下pymysql这个库也可以用来操作MySql,浅浅试了一下貌似不错,所以就打算写下这篇博客来记录一下在Flask中如何使用pymysql操作数据库MySql
PyMySql库
概述
PyMySQL 是从 Python 连接到 MySQL 数据库服务器的接口,点击用户指南 — PyMySQL 0.7.2 文档查看官方文档
安装
1 | pip install pymysql |
Flask框架中的使用
文件config.py的配置
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71import pymysql
# 链接MySql数据库的配置
DB_CONFIG = {
"host": "localhost",
"port": 3306,
"user": "root",
"passwd": "123456",
"db": "flask", # 数据库要连接的数据库名称
"charset": "utf8"
}
# 将对数据库的常用操作封装成一个类来使用
class SQLManager(object):
# 初始化实例方法
def __init__(self):
self.conn = None # 初始化连接对象为空
self.cursor = None # 初始化游标对象为空
self.connect() # 调用自身连接数据库函数connect
# 连接数据库
def connect(self):
self.conn = pymysql.connect(
host=DB_CONFIG["host"],
port=DB_CONFIG["port"],
user=DB_CONFIG["user"],
passwd=DB_CONFIG["passwd"],
db=DB_CONFIG["db"],
charset=DB_CONFIG["charset"]
)
self.cursor = self.conn.cursor()
# 以下的sql参数均为MySql语句
# fetchall()查询所有符合的数据
def get_all(self, sql, args=None):
self.cursor.execute(sql, args)
result = self.cursor.fetchall()
return result
# fetchone()查询单条数据
def get_one(self, sql, args=None):
self.cursor.execute(sql, args)
result = self.cursor.fetchone()
return result
# 执行单条SQL语句并commit提交(多次操作就要多次提交)
def modify(self, sql, args=None):
self.cursor.execute(sql, args)
self.conn.commit()
# 使用pymysql的executemany()可以执行多条SQL语句一次提交
def multi_modify(self, sql, args=None):
self.cursor.executemany(sql, args)
self.conn.commit()
# 关闭数据库cursor和连接
def close(self):
self.cursor.close()
self.conn.close()
# 通过使用with语句可以实现缩进结束自动关闭文件句柄
# 优化数据库连接类SQLManager类,使其支持with语句操作。
# 进入with语句自动执行
def __enter__(self):
return self
# 退出with语句块自动执行
def __exit__(self, exc_type, exc_val, exc_tb):
self.close()常用操作实例
创建表
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20from flask import Flask
from config import *
app = Flask(__name__)
app.config.from_object('config')
# 创建实例
db = SQLManager()
db.modify(sql="""
CREATE TABLE IF NOT EXISTS `users`(
`id` INT UNSIGNED AUTO_INCREMENT NOT NULL ,
`nickName` VARCHAR(100) NOT NULL UNIQUE ,
`gender` INT UNSIGNED NOT NULL,
`telephone` VARCHAR(100) NOT NULL UNIQUE,
`email` VARCHAR(100) NOT NULL UNIQUE,
PRIMARY KEY ( `id` )
)ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
""")
db.close()插入操作
1
2
3
4
5
6
7db.modify(sql="""
INSERT INTO `users`
(id, nickName, gender, telephone, email)
VALUES
(0, 'Aurora', 1, '12345678910', '1234567890@qq.com')
""")
db.close()查询操作
1
2
3
4
5
6# 查询操作
res = db.get_all(sql="""
SELECT * FROM users;
""")
db.close()
print(res)
发现任何错误欢迎在评论区提出~
ps:可能由于评论系统的问题导致无法及时回应的话请谅解~
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 煎bingo子 の 博客!
评论