import pymysql
conn = pymysql.connect(host='127.0.0.1',port=3306,user='root',passwd='123456',db='test')
cursor = conn.cursor() #游标,默认是元组,可以改为字典等:conn.cursor(cursor=pymysql.cursors.DictCursor)
#sql='CREATE TABLE TEST(id INT , name VARCHAR (20))'
#cursor.execute(sql) #执行
# cursor.execute("INSERT INTO test values (1,'bob'),(2,'ss')")
# conn.commit() #提交到数据库
#cursor.close()
#conn.close()
ret = cursor.execute('SELECT * FROM test')
print(ret) #行数
one = cursor.fetchone() #游标从0移动到1
two = cursor.fetchmany(1) #游标从1移动到0 ,拿到元组
all = cursor.fetchall() #游标移动到末尾,不会再拿到数据
print(one)
print(two)
print(all)
cursor.scroll(-2,mode='relative') #向上移动2行
aa = cursor.fetchmany(2)
print(aa)
cursor.scroll(0,mode='absolute') #移动到第0行
bb = cursor.fetchall()
print(bb)
执行结果:
2
(1, 'bob')
((2, 'ss'),)
()
((1, 'bob'), (2, 'ss'))
((1, 'bob'), (2, 'ss'))
事务
事务指逻辑上的一组操作,组成这组操作的各个单元,要不全部成功,要不全部不成功。
start transaction 开启事务 (pymysql就是基于事务来实现的,所以不需要再开启事务。)
Rollback 回滚事务,即撤销指定的sql语句(只能回退insert delete update语句),回滚到上一次commit的位置
Commit 提交事务,提交未存储的事务
savepoint 保留点 ,事务处理中设置的临时占位符 你可以对它发布回退(与整个事务回退不同) rollback to 保留点
<1> 原子性(Atomicity):原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。
<2> 一致性(Consistency):事务前后数据的完整性必须保持一致。在事务执行之前数据库是符合数据完整性约束的,无论事务是否执行成功,事务结束后的数据库中的数据也应该是符合完整性约束的。在某一时间点,如果数据库中的所有记录都能保证满足当前数据库中的所有约束,则可以说当前的数据库是符合数据完整性约束的。
比如删部门表前应该删掉关联员工(已经建立外键),如果数据库服务器发生错误,有一个员工没删掉,那么此时员工的部门表已经删除,那么就不符合完整性约束了,所以这样的数据库也就性能太差啦!
<3>隔离性(Isolation):事务的隔离性是指多个用户并发访问数据库时,一个用户的事务不能被其它用户的事务所干扰,多个并发事务之间数据要相互隔离。
<4>持久性(Durability):持久性是指一个事务一旦被提交,它对数据库中数据的改变就是永久性的,接下来即使数据库发生故障也不应该对其有任何影响。