pymysql 基本使用
查询
# 1. 导包
import pymysql
if __name__ == '__main__':
# 2. 创建连接对象
# connect=Connection=Connect
# 1)host:服务器的主机地址
# 2)port:mysql数据库端口号
# 3)user:用户名
# 4)password:密码
# 5)database:操作的数据库
# 6)charset:操作数据库使用的编码格式
conn = pymysql.connect(host='localhost',
port=3306,
user='root',
password='root',
database='python',
charset='utf8')
# 3. 获取游标,目的就是要执行sql语句
cursor = conn.cursor()
# 准备sql
sql = "select * from students;"
# 4. 执行sql语句
cursor.execute(sql)
# 获取查询结果
# fetchone() 返回一条数据 fetchall() 返回全部数据
row = cursor.fetchall()
for row in row:
print(row)
# 关闭游标
cursor.close()
# 关闭连接
conn.close()
增删改
# 1. 导包
import pymysql
if __name__ == '__main__':
# 2. 创建连接对象
# connect=Connection=Connect
# 1)host:服务器的主机地址
# 2)port:mysql数据库端口号
# 3)user:用户名
# 4)password:密码
# 5)database:操作的数据库
# 6)charset:操作数据库使用的编码格式
conn = pymysql.connect(host='localhost',
port=3306,
user='root',
password='root',
database='python',
charset='utf8')
# 3. 获取游标,目的就是要执行sql语句
cursor = conn.cursor()
# 准备sql
# 插入数据 sql = "insert into students(name,age,sex) values('Jane', 20, 'Female')"
# 更新数据 sql = "update students set sex='Man' where id=3;"
# 删除数据
sql = "delete from students where id=11;"
try:
# 4. 执行sql语句
cursor.execute(sql)
# 提交修改的数据到数据库
conn.commit()
except Exception as e:
# 对修改的数据进行撤销,表示数据回滚
conn.rollback()
finally:
# 关闭游标
cursor.close()
# 关闭连接
conn.close()
防止sql注入
# 1. 导包
import pymysql
if __name__ == '__main__':
# 2. 创建连接对象
# connect=Connection=Connect
# 1)host:服务器的主机地址
# 2)port:mysql数据库端口号
# 3)user:用户名
# 4)password:密码
# 5)database:操作的数据库
# 6)charset:操作数据库使用的编码格式
conn = pymysql.connect(host='localhost',
port=3306,
user='root',
password='root',
database='python',
charset='utf8')
# 3. 获取游标,目的就是要执行sql语句
cursor = conn.cursor()
# 准备sql,使用防止sql注入的sql语句,%s 不需要加引号
sql = "select * from students where name=%s;"
# 4. 执行sql语句
cursor.execute(sql, ("Tom",))
# 获取查询结果
# fetchone() 返回一条数据 fetchall() 返回全部数据
row = cursor.fetchall()
for row in row:
print(row)
# 关闭游标
cursor.close()
# 关闭连接
conn.close()
### 防止sql注入多个参数使用 ###
# 1. 导包
import pymysql
if __name__ == '__main__':
# 2. 创建连接对象
# connect=Connection=Connect
# 1)host:服务器的主机地址
# 2)port:mysql数据库端口号
# 3)user:用户名
# 4)password:密码
# 5)database:操作的数据库
# 6)charset:操作数据库使用的编码格式
conn = pymysql.connect(host='localhost',
port=3306,
user='root',
password='root',
database='python',
charset='utf8')
# 3. 获取游标,目的就是要执行sql语句
cursor = conn.cursor()
# 准备sql,使用防止sql注入的sql语句,%s 不需要加引号
sql = "insert into students(name,age,sex) value(%s,%s,%s);"
try:
# 4. 执行sql语句
# 参数可以是元组,列表,字典
cursor.execute(sql, ["Star", 10, "Man"])
conn.commit()
except Exception as e:
conn.rollback()
finally:
# 关闭游标
cursor.close()
# 关闭连接
conn.close()
事务
show engines; | 查看数据库存储引擎 |
begin | 开启事务 (默认自动提交) |
set autocommit=0; | 手动提交数据 |
commit | 提交事务 |
rollback | 回滚 |
索引
索引:提高查询速度
主键,约束条件外键,自动添加索引
show index table 表名; | 查看表已有索引 |
show profiles | 查看执行时间 |
alert table 表名 add index(字段名1) | 给字段添加索引 |
alert table 表名 add index(字段名1,字段名2) | 给多字段添加联合索引,遵从最左原则(查询语句必须包含字段名1) |
alert table 表名 drop index 索引名 | 删除索引 |