# ### 使用pymysql进行数据库的增删改查
python 操作mysql 默认开启事务,必须在增删改之后,提交数据,
才会对数据库产生变化,否则默认回滚
提交数据 conn.commit()
回滚数据 conn.rollback()
execute 执行sql
executemany 执行多条sql (插入时,可以使用)
conn=pymysql.connect(host="127.0.0.1",user="root",password="123456",database="testdb1") """使用这个语句可以让查到的数据变成 字段:记录 的字典形式,方便查看""" cursor=conn.cursor(cursor=pymysql.cursors.DictCursor)
# 增
# sql="insert into t1(first_name,last_name,age,sex,money) values(%s,%s,%s,%s,%s)" sql="insert into t1 values(%s,%s,%s,%s,%s,%s)" # 一次插入一条数据 res=cursor.execute(sql,("周","永灵",81,1,9.9,8)) print(res) #一次插入多条数据 # res=cursor.executemany(sql,(("吗","训",20,0,15000),("常","远",90,0,10000),("黎","德亮",18,1,8.8))) # print(res) #代表插入数据次数 # 获取最后一条数据的id号 针对于单条语句的执行,返回最后的id print(cursor.lastrowid) '''如果没有id号就查的是0,这个id是真实的id,而不是算的第多少行,就是搜索你的自增 的那个字段,按自增的那个字段最后插入的一个值给你返回,没有自增字段统统返回是0''' # 如果是执行多条数据executemany , 通过倒序查一条的方式获取 # select id from t1 order by id desc limit 1
# 改
sql = "update t1 set first_name= %s where id=%s" res = cursor.execute(sql,("王二麻子",8)) print(res) if res: print("更新成功") else: print("更新失败")
# 查
sql = "select * from t1" # 6~65 res = cursor.execute(sql) print(res) # (1) 获取一条数据 fetchone res = cursor.fetchone() print(res)#{'id': 6, 'first_name': '常', 'last_name': '远', 'age': 90, 'sex': 0, 'money': 10000.0} # (2) 获取多条数据 fetchmany 默认搜索一条,上一次查询的数据,往下获取 data = cursor.fetchmany(3) print(data)
for row in data:
if row["sex"]==1:
sex="男"
else:
sex="女"
print("姓:{},名:{},年龄:{},性别:{},收入:{}".format(row["first_name"],row["last_name"],row["age"],sex, row["money"]))
# ### 滚动 可以自定义查询的位置
sql = "select * from t1 where id >= 50" res = cursor.execute(sql) # 1.相对滚动 # 先搜索一条 查的id=50 res = cursor.fetchone() print(res) # 再向后滚动3条 id=50的查了,从id=51开始滚3条 => 滚到id=53后,查就查的id=54 cursor.scroll(3,mode="relative") # 再向后滚动2条 57 cursor.scroll(2,mode="relative") # 在往前滚2条 cursor.scroll(2,mode="relative") # 2.绝对滚动 相对于最开始第一条数据进行运算 cursor.scroll(0,mode="absolute") cursor.scroll(5,mode="absolute") # 在进行增删改的时候,必须提交数据,才真正进行修改,默认开启事务处理 conn.commit() cursor.close() conn.close()