python如何操作mysql
首先要通过pip install pymysql安装一个pymysql模块
直接上代码:
import pymysql
#连接数据库
conn = pymysql.connect(host='127.0.0.1',port=3306,user='root',passwd='root',db='test')
#创建游标
cursor=conn.cursor()
#创建一张表
# sql="create table my_table(id int,name varchar(20))"
# cursor.execute(sql)
#向表中插入数据
# sql="insert into my_table values(1,'jack'),(2,'rose')"
# cursor.execute(sql)
ret=cursor.execute("select * from my_table")
#结果返回的是表中一共有几条记录
print(ret)
#拿到第一条记录
print(cursor.fetchone())
#拿到前三条记录
print(cursor.fetchmany(3))
#拿到所有记录
print(cursor.fetchall())
#提交
conn.commit()
cursor.close()
conn.close()
输出结果:
4
(1, 'jack')
((2, 'rose'), (1, 'jack'), (2, 'rose'))
()
哎,你发现问题了没有?为什么我执行cursor.fetchall()并没有拿到表中所有记录呢?应该拿到4条记录才对,因为前面插入了4条记录。
原因在于cursor是游标,也可以理解为光标,下面这两条语句已经把所有的记录都拿走了
> #拿到第一条记录
> print(cursor.fetchone())
> #拿到前三条记录
> print(cursor.fetchmany(3))
轮到cursor.fetchall()的时候就空了。
再介绍一个知识点,前面提到游标因为移动,导致最后cursor.fetchall()拿到的结果是空,那么有没有办法让游标回到初始位置或者我指定位置呢?
当然有,python就是这么牛逼带闪电,大招来了,阁下看清楚了。
假设此时游标在第二条记录那里,想回到原点,代码如下:
cursor.scroll(-1,mode="relative") --相对游标,这里-1代表向前移动
cursor.scroll(0,mode="absolute") -- 绝对游标,这里的0代表第一个位置,如果是1就代表第二个位置,就跟python中索引差不多。
再补充一个知识点,前面创建游标语句cursor=conn.cursor()默认操作后的结果是元组,可以加参数改成字典。
cursor=conn.cursor(cursor=pymysql.cursors.DictCursor)