首页 > 技术文章 > python操作mysql(一)原生模块pymysql

pyrene 2017-04-17 19:02 原文

一、下载安装

 pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同。

 下载安装

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
View Code

 

二、设计用户交互的数据库

首先导入这个模块,之后连接上这个数据库,创建游标,然后设计交互式的操作数据库,最后提交数据,关闭游标,关闭连接

主要用到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()
View Code

三、fetch数据类型

fetchall:获取所有数据,默认的获取数据类型是元祖,如果想要字典类型的数据需要在创建右边的时候在参数里面写入cursor=pymysql.cursor.DictCursor

fetchone:获取第一个数据(类似指针的形式)

fetchmany(size):依次移动(参数个指针)

在fetch数据按照顺序进行,可以使用cursor.scroll(num.mode)来移动游标位置,num如果为正值那么就往"位置"后面移动。如果为负值那么就往"位置"前面移动

  • cursor.scroll(1,mode='relative')  # 相对当前位置移动
  • cursor.scroll(2,mode='absolute') # 相对绝对位置移动
#/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()
View Code

 四、获取创建数据自增ID

用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
View Code

 

推荐阅读