1 连接数据库
1.1 安装pymysql
pip install pymysql
1.2 引入模块
- 在py文件中引入pymysql模块
import pymsql
1.3 Connection 对象
- 用于建立与数据库的连接
- 创建对象:调用connect()方法
conn=connect()
- 参数host:连接的mysql主机,如果本机是'localhost'
- 参数port:连接的mysql主机的端口,默认是3306
- 参数database:数据库的名称
- 参数user:连接的用户名
- 参数password:连接的密码
- 参数charset:通信采用的编码方式,推荐使用utf8
1.3.1 对象的方法
- close()关闭连接
- commit()提交
- cursor()返回Cursor对象,用于执行sql语句并获得结果
1.4 cursor对象
- 用于执行sql语句,使用频度最高的语句为select、insert、update、delete
- 获取Cursor对象:调用Connection对象的cursor()方法
cursor=conn.cursor()
1.4.1 cursor对象的方法
- close()关闭
- execute(operation [, parameters ])执行语句,返回受影响的行数,主要用于执行insert、update、delete语句,也可以执行create、alter、drop等语句
- fetchone()执行查询语句时,获取查询结果集的第一个行数据,返回一个元组
- fetchall()执行查询时,获取结果集的所有行,一行构成一个元组,再将这些元组装入一个元组返回
1.4.2 cursor对象的属性
- rowcount只读属性,表示最近一次execute()执行后受影响的行数
- connection获得当前连接对象
2 增删改查
表名 person 的数据信息
2.1 增
import pymysql
conn = pymysql.Connect(host="localhost", port=3306, user="root", password="123456", database="sql_test")
cursor = conn.cursor()
# 增
insert_sql = "insert into person (name, sex, age) values ('西夏公主', '女', 26);"
cursor.execute(insert_sql)
conn.commit()
cursor.close()
conn.close()
增加后的数据
2.2 删
import pymysql
conn = pymysql.Connect(host="localhost", port=3306, user="root", password="123456", database="sql_test")
cursor = conn.cursor()
# 删
sql = "delete from person where id=4;"
cursor.execute(sql)
conn.commit()
cursor.close()
conn.close()
删除后的数据
2.3 改
import pymysql
conn = pymysql.Connect(host="localhost", port=3306, user="root", password="123456", database="sql_test")
cursor = conn.cursor()
# 改
sql = "update person set age=24 where id=5;"
cursor.execute(sql)
conn.commit()
cursor.close()
conn.close()
修改后的数据
2.4 查询
2.4.1 查询单条数据
import pymysql
conn = pymysql.Connect(host="localhost", port=3306, user="root", password="123456", database="sql_test")
cursor = conn.cursor()
# 查询单条
sql = "select * from person where id=1"
cursor.execute(sql)
data = cursor.fetchone()
print(data)
cursor.close()
conn.close()
"""(1, '萧峰', '男', 35)"""
2.4.2 查询多条数据
import pymysql
conn = pymysql.Connect(host="localhost", port=3306, user="root", password="123456", database="sql_test")
cursor = conn.cursor()
# 查询多条
sql = "select * from person;"
cursor.execute(sql)
data = cursor.fetchall()
print(data)
cursor.close()
conn.close()
"""((1, '萧峰', '男', 35), (2, '虚竹', '男', 28), (3, '段誉', '男', 26), (5, '阿朱', '女', 24), (6, '王语嫣', '女', 23), (7, '西夏公主', '女', 26))"""
2.4.3 数据返回字典
之前查询返回的都是元组或者元组嵌套元组,python里有一种方法返回的时字典或列表嵌套字典
import pymysql
from pymysql import cursors
# 创建连接,添加参数cursorclass=cursors.DictCursor
conn = pymysql.Connect(
host="localhost", port=3306, user="root", password="123456", database="sql_test",
cursorclass=cursors.DictCursor
)
cursor = conn.cursor()
# 查询单条
sql1 = "select * from person where id=1"
cursor.execute(sql1)
data1 = cursor.fetchone()
print(data1)
# 查询多条
sql2 = "select * from person;"
cursor.execute(sql2)
data2 = cursor.fetchall()
print(data2)
cursor.close()
conn.close()
"""
单条返回字典
{'id': 1, 'name': '萧峰', 'sex': '男', 'age': 35}
多条返回列表嵌套字典
[{'id': 1, 'name': '萧峰', 'sex': '男', 'age': 35}, {'id': 2, 'name': '虚竹', 'sex': '男', 'age': 28}, {'id': 3, 'name': '段誉', 'sex': '男', 'age': 26}, {'id': 5, 'name': '阿朱', 'sex': '女', 'age': 24}, {'id': 6, 'name': '王语嫣', 'sex': '女', 'age': 23}, {'id': 7, 'name': '西夏公主', 'sex': '女', 'age': 26}]
"""