1、mysqldb\pymysql\的区别和联系:
1)mysqldb不支持python3.x,
2)python3.x使用pymysql操作mysql数据库
2、pymysq操作数据库的步骤:(首先要先安装pymysql,直接通过pip安装就可以了)
说明:数据库的回滚操作是因为保证事物的原子性,让数据库的增删改保证要么都成功要么都失败。
3、直接看代码:
(1)有条件查询:
#coding=utf-8
import pymysql
#1、创建连接
connection=pymysql.connect(
host='xx.xx.xx.xx',
user='user_test',
password='********',
database='',
charset='utf8' #注意不是utf-8
)
try:
#2、创建游标对象
with connection.cursor() as cursor:
# 执行sql语句:通过列表传递,第一个参数对应第二句代码中的第一个位置的值,以此类推
# sql='select * from crf_shlife_loan.t_user where mobile_no=%s'
# cursor.execute(sql,["13213114510"])
# 执行sql语句:通过元组传递
# sql='select name,userid from user where userid>%s '
# cursor.execute(sql,(0,))
# 3、执行sql语句:通过字典传递,参数需要名称,如下面括号中的phone是参数的名称
sql = 'select id,user_name from crf_shlife_loan.t_user where mobile_no=%(phone)s'
cursor.execute(sql, {'phone':'13213114510'})
#4、提取结果集
result_set=cursor.fetchall() #提取全部的结果
print(result_set)
for row in result_set:
print('user_name:{0},id:{1}'.format(row[1],row[0]))#这里和select语句字段顺序有关
#5、关闭游标
cursor.close()
finally:
#6、关闭连接
connection.close()
执行后,可以看到控制台打印出了sqlZ查询到的结果:
((1051, '测试110905'),)
user_name:测试110905,id:1051
(2)无条件查询:
#coding=utf-8
import pymysql
#1\创建连接
connection=pymysql.connect(
host='**.***.*.***',
user='user_test',
password='******',
database='',
charset='utf8' #注意不是utf-8
)
try:
#2、创建游标对象
with connection.cursor() as cursor:
#执行sql
sql = 'select * from crf_shlife_loan.t_user '
cursor.execute(sql)
#4、提取结果集
row=cursor.fetchone()
if row is not None:
print("第一条数据是:{0}".format(row))
#5、关闭游标
cursor.close()
finally:
#6、关闭连接
connection.close()
执行后会把数据库中第一条数据完整的取出来;
(3)插入数据的操作
#coding=utf-8
import pymysql
#1\创建连接
connection=pymysql.connect(
host='10.191.2.64',
user='user_test',
password='user_test@1201',
database='',
charset='utf8' #注意不是utf-8
)
try:
#2、创建游标对象
with connection.cursor() as cursor:
sql = 'insert into crf_shlife_loan.t_user(user_name,id_no) values(%s,%s)'
afc=cursor.execute(sql,['测试','227861198805123375'])
print(afc) #打印一下成功插入的条数
#提交数据库事物
connection.commit() #游标会自动关闭
#捕获数据库的异常
except pymysql.DatabaseError:
#如果出现异常就回滚
connection.rollback()
finally:
#6、关闭连接
connection.close()
(4)更新:
#coding=utf-8
import pymysql
#1\创建连接
connection=pymysql.connect(
host='**.191.**.**',
user='user_test',
password='*****',
database='',
charset='utf8' #注意不是utf-8
)
try:
#2、创建游标对象
with connection.cursor() as cursor:
sql = 'update crf_shlife_loan.t_user set user_name=%s where mobile_no=%s'
afc=cursor.execute(sql,['测试001','15421232641'])
print(afc) #打印一下成功更新成功的条数
#提交数据库事物
connection.commit() #游标会自动关闭
#捕获数据库的异常
except pymysql.DatabaseError:
#如果出现异常就回滚
connection.rollback()
finally:
#6、关闭连接
connection.close()
(5)删除:
#coding=utf-8
import pymysql
#1\创建连接
connection=pymysql.connect(
host='10.***.**.**',
user='user_test',
password='*****',
database='',
charset='utf8' #注意不是utf-8
)
try:
#2、创建游标对象
with connection.cursor() as cursor:
sql = 'delete from crf_shlife_loan.t_user where mobile_no=%s'
afc=cursor.execute(sql,('15421232641'))
print(afc) #打印一下成功删除成功的条数
#提交数据库事物
connection.commit() #游标会自动关闭
#捕获数据库的异常
except pymysql.DatabaseError:
#如果出现异常就回滚
connection.rollback()
finally:
#6、关闭连接
connection.close()