链接数据库
conn = pymysql.connect(
host=“你的数据库地址”,
user=“用户名”,password=“密码”,
database=“数据库名”,
charset=“utf8”)
connection对象包含的方法
cursor() 使用该连接创建并返回游标
commit() 提交当前事务
rollback() 回滚当前事务
close() 关闭连接
创建游标查询数据
cursor = connection.cursor()
execute("select * from t1") 执行一个数据库的查询命令
fetchone() 取得结果集的下一行
fetchmany(n) 获取结果集的下n行
fetchall() 获取结果集中的所有行
rowcount() 返回数据条数或影响行数
close() 关闭游标对象
execute的字符串拼接
# 将以下代码
sql="select * from userinfo where name='%s' and password='%s'" %(user,pwd)
res=cursor.execute(sql)
# 可以替换为
sql="select * from userinfo where name=%s and password=%s" #%s需要去掉引号,pymysql会自动加上
res=cursor.execute(sql,[user,pwd])
断线重连。参考:mysql断开重连
def reConnect(self):
try:
self.connection.ping()
except:
self.connection()
DEMO:参考:PyMySQL的基本使用
增加多条数据
import pymysql
conn = pymysql.connect(
host='192.168.0.103',
port=3306,
user='root',
password='123',
database='xing',
charset='utf8'
)
# 获取一个光标
cursor = conn.cursor()
# 定义要执行的sql语句
sql = 'insert into userinfo(user,pwd) values(%s,%s);'
data = [
('july', '147'),
('june', '258'),
('marin', '369')
]
# 拼接并执行sql语句
cursor.executemany(sql, data)
# 涉及写操作要注意提交
conn.commit()
# 获取最新的那一条数据的ID
last_id = cursor.lastrowid
print("最后一条数据的ID是:", last_id)
# 关闭连接
cursor.close()
conn.close()
删除
import pymysql
# 建立连接
conn = pymysql.connect(
host="192.168.0.103",
port=3306,
user="root",
password="123",
database="xing",
charset="utf8"
)
# 获取一个光标
cursor = conn.cursor()
# 定义将要执行的SQL语句
sql = "delete from userinfo where user=%s;"
name = "june"
# 拼接并执行SQL语句
cursor.execute(sql, [name])
# 涉及写操作注意要提交
conn.commit()
# 关闭连接
cursor.close()
conn.close()
更改数据
import pymysql
# 建立连接
conn = pymysql.connect(
host="192.168.0.103",
port=3306,
user="root",
password="123",
database="xing",
charset="utf8"
)
# 获取一个光标
cursor = conn.cursor()
# 定义将要执行的SQL语句
sql = "update userinfo set pwd=%s where user=%s;"
# 拼接并执行SQL语句
cursor.execute(sql, ["july", "july"])
# 涉及写操作注意要提交
conn.commit()
# 关闭连接
cursor.close ()
conn.close ()

查询数据
import pymysql
conn = pymysql.connect (
host='192.168.0.103',
port=3306,
user='root',
password='123',
database='xing',
charset='utf8'
)
# 获取一个光标
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor) # 返回字典数据类型
# 定义将要执行的sql语句
sql = 'select user,pwd from userinfo;'
# 拼接并执行sql语句
cursor.execute(sql)
# 取到查询结果
ret1 = cursor.fetchone() # 取一条
ret2 = cursor.fetchmany(3) # 取三条
ret3 = cursor.fetchone() # 取一条
cursor.close()
conn.close()
print(ret1)
print(ret2)
print(ret3)
# 可以获取指定数量的数据
cursor.fetchmany(3)
# 光标按绝对位置移动1
cursor.scroll(1, mode="absolute")
# 光标按照相对位置(当前位置)移动1
cursor.scroll(1, mode="relative")

数据回滚:数据修改后,提交前,将数据回复到修改前。
try:
# 拼接并执行SQL语句
cursor.execute(sql1, [user, pwd])
print(sql1)
cursor.execute(sql2, [id, hobby]) # 报错的SQL语句
# 涉及写操作注意要提交
conn.commit()
except Exception as e:
print(str(e))
# 有异常就回滚
conn.rollback()
网友评论