PyMQL简单使用【入门CRUD】
July 25, 2020
2855
pymysql是python3中的mysqldb(python2) 在使用这个库之前,首先你得确保自己会使用基本的SQL语句,对MySQL数据库具有一定的了解(基本即可)。
一、安装
通过pip进行安装:
1 |
|
二、通过数据库可视化程序/终端建数据库和表
pymysql在使用之前,需要通过数据库可视化程序/终端建立数据库
三、使用pymysql操作数据库
- 连接数据库: 我们通过一下必填参数连接数据库: 其中的host,user,password,port,database均为定位到数据库所需要的参数,而charset用于指定该数据库的编码格式,需要与建立数据库的时候(create database 数据库名称 charset=’xxxx’)保持一致(一般为utf8)
1
2
3
4
5
6
7
8
9# 连接Mysql
conn = pymysql.connect(
host='127.0.0.1',
user='自定义用户名(root)',
password="自定义密码",
database='数据库名称',
port=3306,
charset='utf8'
) - 获取游标对象: 连接成功后我们可以通过conn拿到其中的cursor对象,该对象即为执行SQL语句以及拿到相关结果的操作对象,也就是直译的游标对象。
1
2# 创建游标对象
cursor = conn.cursor() - 编写SQL语句并执行: 使用pymql需要自己手动进行SQL语句的编写,而SQL语句的基本增删改查语句中,只有查询语句不会被数据库造成影响,其他语句则均会对数据库产生作用效果。 pymysql为了避免由于出现异常或者错误情况而导致数据库出现状况,所有对数据库造成实际影响的语句,均需要通过 ```con.commit()```方法来提交所有的变更。 另外pymysql在执行SQL语句的方法 ```cursor.execute()```方法中,可以多输入一个参数,这个参数可以是数组(list)/元组(tuple)/字典(dict),pymysql会在内部对该参数进行处理,并自动将其处理为对应完整SQL语句。 接下来的语句中也将分别使用数组/元组/dict三种形式来演示相关的写法,同时这三者是通用的。 注意一下语句,插入表为info,该表具有id,name,age,gender四个属性,可自信修改为自己所需要的属性。
- 查询语句:
1
2
3
4# 编写SQL语句
sql = 'select * from info' # 表名请自行修改为自定义参数
# 纯字符串模式,单参数
cursor.execute(sql) - 插入语句:
1
2
3
4
5# 编写增加的sql语句
sql = "insert into info(name,age,gender) values (%s,%s,%s)"
# 使用数组进行赋值插入,即第二个参数使用数组形式
add_data = ['云无月', 4500, '女']
cursor.execute(sql, add_data) - 修改语句:
1
2
3
4
5
6# 编写修改的sql语句
sql = "update info set name=%s where name=%s"
# 第二个参数使用元组形式,实际上可以与上文数组写法完全一致(也可以直接自行拼接字符串)
add_data = ('王牛蛙', '王辟邪')
# 注意len返回的是修改的数目 也就是数据库修改时的数字返回值
len = cursor.execute(sql, add_data) - 删除语句:
1
2
3
4
5
6
7
8
9# 注意,如果要使用dict(JSON)作为sql语句补位,那么补位的位置写法为%(key命)s
# 如下补位为id:
sql = "delete from info where id =%(id)s"
add_data = {
"name": "岑缨",
"id" : 28
}
# 执行dict形式的补位
cursor.execute(sql, add_data)
- 释放资源:
1
2
3
4# 关闭游标
cursor.close()
# 关闭连接
conn.close() - 异常处理与回滚: pymysql在连接的时候,就会对当前数据库进行一次快照(保留未操作初始状态),如果出现错误情况,可以通过 ```conn.rollback()```方法进行回滚。 由于数据库操作涉及到网络和其他设备的操作,所以必须需要做好异常处理。 通常我们会进行如下格式的异常处理:
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#!/usr/bin/env python
# -*- coding: utf-8 -*-
# 导包
import pymysql
# 连接Mysql
conn = pymysql.connect(
host='127.0.0.1',
user='自定义用户名(root)',
password="自定义密码",
database='数据库名称',
port=3306,
charset='utf8'
)
try:
# 创建游标对象
cursor = conn.cursor()
# 编写增加/删除/修改的sql语句
# 编写SQL语句,进行相关操作...
# ...如:
sql = "delete from info where id =%(id)s"
add_data = {
"name": "岑缨",
"id" : 28
}
# 执行编写的SQL语句
cursor.execute(sql, add_data)
# 提交修改
conn.commit()
# 关闭,释放资源
cursor.close()
print("任务完成")
except Exception as e:
# 回滚
conn.rollback()
print(e)
finally:
conn.close()
- 本文作者:AX
- 本文链接:http://xgpax.top/2020/07/25/pymql%E7%AE%80%E5%8D%95%E4%BD%BF%E7%94%A8%E3%80%90%E5%85%A5%E9%97%A8crud%E3%80%91/index.html
- 版权声明:本博客所有文章均采用 BY-NC-SA 许可协议,转载请注明出处!