使用示例:
import pymysql #python3 conn=pymysql.connect(host="localhost",port=3306,user="root",password="abcd",database="bank",charset="utf8") #字符集不是必须的 cursor = conn.cursor() sql="select * from user_info" result=cursor.execute(sql) #不论增删查改,result都是受影响的记录数,int型 for row in cursor: #遍历结果集 print(row) #输出一条记录,元组形式 print(row[0]) #输出记录中的某个字段 cursor.close() conn.close()
提取一条记录:
import pymysql #python3 conn=pymysql.connect(host="localhost",user="root",password="abcd",database="bank",charset="utf8") #字符集不是必须的 cursor = conn.cursor() sql="select * from user_info" result=cursor.execute(sql) print(cursor.fetchone()) #提取并返回一条记录,指针会自动后移。最初指针指向第一条之前。第一条 print(cursor.fetchone()) #第二条。元组形式。 print(cursor.fetchone()[0]) #一个字段,不能使用字段名,只能使用索引 cursor.close() conn.close()
提取多条记录:
import pymysql #python3 conn=pymysql.connect(host="localhost",user="root",password="abcd",database="bank",charset="utf8") #字符集不是必须的 cursor = conn.cursor() sql="select * from user_info" result=cursor.execute(sql) print(cursor.fetchmany(2)) #提取指定的条数,指针会自动后移。只要是提取,指针都会自动后移。 for row in cursor: #cursor中是从第三行开始的记录 print(row) #fetchmany()返回值是嵌套的元组形式。 ((1, 'chy', 200.0), (2, 'zhangsan', 200.0))。一个元素即一条记录。 #fetchall()是提取结果集的所有记录 #cursor存放结果集,提取就是把一些记录从cursor中提取出来(从cursor中拿出来,cursor中不再有这些记录了) cursor.close() conn.close()
设置sql语句参数:
import pymysql #python3 conn=pymysql.connect(host="localhost",user="root",password="abcd",database="bank",charset="utf8") #字符集不是必须的 cursor = conn.cursor() id=1 name="chy" # sql="select * from user_info where id=%d and name='%s'"%(id,name) #如果是字符串,%s要加引号 sql="select * from user_info where id={} and name='{}'".format(id,name) #如果是字符串,{}也要加引号 result=cursor.execute(sql) print(cursor.fetchall()) #提取结果集中所有的记录数 cursor.close() conn.close()
插入一条记录:
import pymysql #python3 conn=pymysql.connect(host="localhost",user="root",password="abcd",database="bank",charset="utf8") #字符集不是必须的 cursor = conn.cursor() id=3 name="wangwu" money=100 sql="insert into user_info (id,name,money) values (%d,'%s',%d)"%(id,name,money) #如果是字符串,占位的要加引号 result=cursor.execute(sql) #增删查改都是execute print(result) #1 搜相应的记录数 print(cursor.fetchall()) #不会报错,空元组 conn.commit() #需要提交才会同步到数据库。缺少此句代码,不会同步到数据库。 cursor.close() conn.close()
增删改的操作类似,注意增删改都需要conn.commit()才会提交到数据库。
另一种设置参数的方式:
import pymysql #python3 conn=pymysql.connect(host="localhost",user="root",password="abcd",database="bank",charset="utf8") cursor = conn.cursor() sql="insert into user_info (id,name,money) values (%s,%s,%s)" #如果是在execute()中注入数据,不管是什么类型,都必须写成%s,且不能加引号 result=cursor.execute(sql,(5,"name",10)) #在execute()中注入数据。在这里区分数据类型。使用元组、列表均可 #result=cursor.execute(sql,[5,"name",10]) conn.commit() cursor.close() conn.close()
批量操作:
import pymysql #python3 conn=pymysql.connect(host="localhost",user="root",password="abcd",database="bank",charset="utf8") cursor = conn.cursor() sql="insert into user_info (id,name,money) values (%s,%s,%s)" #如果是在execute()中注入数据,不管是什么类型,都必须写成%s,且不能加引号 data=((17,"chy",90),(18,"chy",99)) #至少2个元素,使用嵌套的元组、列表均可 #data=[[17,"chy",90],[18,"chy",99]] try: result=cursor.executemany(sql,data) #批量操作,注入嵌套的元组。注意是executemany(),且必须是嵌套的元组,元组中至少要有2个元组(记录),只有一条会出错。 conn.commit() #executemany()是执行2条及以上的操作,所以至少2个元素 except Exception as e: print(e) conn.rollback() #失败就回滚 cursor.close() conn.close()