pymsql是Python中操做MySQL的模块,其使用方法和MySQLdb几乎相同。python
下载安装mysql
C:\Users\Administrator>pip install pymysql Collecting pymysql Downloading PyMySQL-0.7.11-py2.py3-none-any.whl (78kB) 38% |████████████▌ | 30kB 266kB/s eta 0:00:01 51% |████████████████▋ | 40kB 125kB/s eta 0:0 64% |████████████████████▊ | 51kB 156kB/s eta 77% |█████████████████████████ | 61kB 187kB/s 90% |█████████████████████████████ | 71kB 217 100% |████████████████████████████████| 81kB 233kB/s Installing collected packages: pymysql Successfully installed pymysql-0.7.11
首先导入这个模块,以后链接上这个数据库,建立游标,而后设计交互式的操做数据库,最后提交数据,关闭游标,关闭链接sql
主要用到execute参数数据库
#/usr/bin/env python import pymysql #建立链接 conn = pymysql.connect(host="127.0.0.1",port=3306,user="root",password="123456",db="db1") #必须建立游标(游标帮着存储数据,用来操做) cursor=conn.cursor() #执行sql,而且返回影响函数,可是数据库尚未变动,也就是没有提交 # effect_row=cursor.execute("update user set username='pyrene'") # effect_row=cursor.execute("INSERT INTO user(username,password) values('pyren','23')") # print(effect_row) #打印出受用户注册影响的信息条数 # 交互是让用户输入数据 u=input(">>>") p=input(">>>") effect_row=cursor.execute("INSERT INTO user(username,password) values(%s,%s)",(u,p)) #这个是插入多行数据 # effect_row=cursor.executemany("INSERT INTO user(username,password) values(%s,%s)",[("aa","bb"),("cc","dd")]) #提交数据,否则没法保存新建或者修改的数据 conn.commit() #关闭游标 cursor.close() #关闭链接 conn.close()
fetchall:获取全部数据,默认的获取数据类型是元祖,若是想要字典类型的数据须要在建立右边的时候在参数里面写入cursor=pymysql.cursor.DictCursoride
fetchone:获取第一个数据(相似指针的形式)函数
fetchmany(size):依次移动(参数个指针)fetch
在fetch数据按照顺序进行,可使用cursor.scroll(num.mode)来移动游标位置,num若是为正值那么就往"位置"后面移动。若是为负值那么就往"位置"前面移动spa
#/usr/bin/env python import pymysql #建立链接 conn = pymysql.connect(host="127.0.0.1",port=3306,user="root",password="123456",db="db1") #这里用来指定游标,让下面的值以字典的形式返回 cursor=conn.cursor(cursor=pymysql.cursors.DictCursor) effect_row=cursor.execute("select * from user where nid>%s order by nid desc" ,(7,)) result=cursor.fetchone()#获取第一个数据 print(result) result=cursor.fetchone()#获取第一个数据 print(result) result=cursor.fetchone()#获取第二个数据 # result=cursor.fetchmany(1)#依次挪动(参数)个指针 print(result) cursor.scroll(-1,mode="relative") #把指针移动到当前指针的上一次位置负值往上移动,正值往下移动 result=cursor.fetchone()#获取第一个数据 print(result) #关闭游标 cursor.close() #关闭链接 conn.close()
用cursor.lastrowid获取插入数据自增的位置设计
注意:若是用户用executemany插入多个数据,那么获取的位置为最后一个插入位置的数据指针
#/usr/bin/env python import pymysql #建立链接 conn = pymysql.connect(host="127.0.0.1",port=3306,user="root",password="123456",db="db1") #这里用来指定游标,让下面的值以字典的形式返回 cursor=conn.cursor() u=input(">>") p=input(">>") effect_raw=cursor.execute("insert into user(username,password) values(%s,%s)",(u,p)) conn.commit() print(cursor.lastrowid) #关闭游标 cursor.close() #关闭链接 conn.close() # >>a # >>aa # 14