pymysql 操作
2020-03-19 本文已影响0人
清水秋香
- Python查询Mysql使用 fetchone() 方法获取单条数据, 使用fetchall() 方法获取多条数据。
- fetchone(): 该方法获取下一个查询结果集。结果集是一个对象
- fetchall():接收全部的返回结果行.
- rowcount: 这是一个只读属性,并返回执行 execute()方法后影响的行数。
import pymysql
#打开数据库连接
connection = pymysql.connect(host='127.0.0.1',user='root',passwd='wgz123',port=3306,db='classes')
#获取操作游标
try:
with connection.cursor() as cursor:
sql = '''
insert into chaxun values('1993','1','1.4')
'''
cursor.execute(sql)
connection.commit()
with connection.cursor() as cursor:
sql = """
delete from chaxun where amount = '1.2';
"""
cursor.execute(sql)
connection.commit()
with connection.cursor() as cursor:
sql = '''
update chaxun set year='1995' where amount = '1.3';
'''
cursor.execute(sql)
connection.commit()
with connection.cursor() as cursor:
sql = '''
select * from chaxun;
'''
cursor.execute(sql)
print(cursor.fetchmany())
print(cursor.fetchone())
print(cursor.fetchall())
with connection.cursor() as cursor:
sql = '''
create table if not exists test(
id int auto_increment,
name char(255),
age int not null,
primary key(id)
)
'''
cursor.execute(sql)
connection.commit()
except Exception as e:
connection.rollback()
raise e
finally:
connection.close()
- 之所以要使用 try 代码块,是因为真实场景当中,你执行的 sql 可能有四五条甚至七 八条 其中包括向多张表、甚至多个库插入复杂的组合数据,数据之间存在外键关系或其他逻 辑关系(比如学生表和成绩表),一旦某条 sql 报错而其他 sql 不报错(报错的 sql 没 有插入数据进去,其他的 sql 没报错,成功插入了数据),就会造成大量脏数据,引 发 bug,带来大量的数据修复工作,所以我们用 try 捕获异常,一旦任意 sql 报错即 刻回滚操作