pymysql模块可以在python种链接MySql数据库,并实现对数据的操作。

安装:

使用国内源
pip3 install pymysql -i https://pypi.douban.com/simple

连接数据库:

member表如下:

PyMySQL rpm 包下载_数据


连接数据库:

import pymysql

conn=pymysql.connect( host="地址",port=3306,user="用户名",password="密码",charset='utf8',)#连接数据库

数据库查询
fetchall():获取所有行数据源

cursor=conn.cursor()#初始化游标
cursor.execute("SELECT * FROM member")#执行SQL语句
info=cursor.fetchall()
print(info)
cursor.close()#游标对象关闭
conn.close()#关闭连接

运行结果:
元组数据类型
(1, 'admin', '13800138000'), 
(2, 'admin', '13800138001'),
(3, 'admin', '13800138002'),
(4, 'admin', '13800138003'),
(5, 'admin', '13800138004')

fetchone():获取首行数据

import pymysql

conn=pymysql.connect( host="地址",port=3306,user="用户名",password="密码",charset='utf8',)#连接数据库
cursor=conn.cursor()#初始化游标
cursor.execute("SELECT * FROM member")#执行SQL语句
info=cursor.fetchone()#获取首行数据
info2=cursor.fetchone()#游标位置发生了变化,所以会获取第二行数据
print(info)
print(info)
cursor.close()#游标对象关闭
conn.close()#关闭连接

运行结果:
(1, 'admin', '13800138000'),
(2, 'admin', '13800138001')

如果fetchone跟在fetchall后面同时使用时,这里需要注意游标位置,否则会出现以下问题:

import pymysql

conn=pymysql.connect( host="地址",port=3306,user="用户名",password="密码",charset='utf8',)#连接数据库
cursor=conn.cursor()#初始化游标
cursor.execute("SELECT * FROM member")#执行SQL语句
all_info=cour.fetchall()#获取全部查询数据
info=cursor.fetchone()#获取一行数据
print(all_info)
print(info)
cursor.close()#游标对象关闭
conn.close()#关闭连接

运行结果:
(1, 'admin', '13800138000'), 
(2, 'admin', '13800138001'),
(3, 'admin', '13800138002'),
(4, 'admin', '13800138003'),
(5, 'admin', '13800138004')
None

fetchone会获取不到数据,游标位置类似于文件的指针位置,fetchall获取全部数据后,游标位置在数据的最后,所以会获取不到数据。

获取到的是元组数据类型,如果数据较多,没有标题的情况下会不知道每列都代表什么数据,这时候可以用以下方法:作为字典为返回结果

PyMySQL rpm 包下载_数据库_02

cursor=conn.cursor(cursor=pymysql.cursors.DictCursor)#初始化游标时,将属性cursor设置为pymysql.cursors.DictCursor

————————————————————————————————————————————————————————————————————————————
也可以在创建连接时将cursorclass设置成pymysql.cursors.DictCursor
connect=pymysql.connect( host="120.78.128.25",
 port=3306,
 user="future",
 password="123456",
 charset='utf8',
 cursorclass=pymysql.cursors.DictCursor)#将cursorclass设置成pymysql.cursors.DictCursor

在来看下运行结果:

import pymysql

conn=pymysql.connect( host="地址",port=3306,user="用户名",password="密码",charset='utf8',)#连接数据库
cursor=conn.cursor(cursor=pymysql.cursors.DictCursor)#初始化游标
cursor.execute("SELECT * FROM member")#执行SQL语句
info=cursor.fetchone()
print(info)
cursor.close()#游标对象关闭
conn.close()#关闭连接

运行结果:
{'id': 1, 'username': 'admin', 'mobile': '13800138000'}

数据的增,删,改:
需要用commit()方法提交,否则不会生效。也可以在初始化连接的时候把autocommit设置为True,默认是False。

import pymysql

conn=pymysql.connect( host="地址",port=3306,user="用户名",password="密码",charset='utf8')#连接数据库
cursor=conn.cursor(cursor=pymysql.cursors.DictCursor)#初始化游标
cursor.execute("INSERT INTO member(username,mobile) VALUES('admin','13800138005')")#执行SQL语句
conn.commit()#提交事务
cursor.close()#游标对象关闭
conn.close()#关闭连接

上下文管理器:
python对文件操作时经常用到with,数据库操作也可以使用,提高代码的可读性,如下:

import pymysql

conn=pymysql.connect( host="地址",port=3306,user="用户名",password="密码",charset='utf8')#连接数据库
with conn.cursor(cursor=pymysql.cursors.DictCursor) as cursor:#初始化游标
    cursor.execute("SELECT * FROM  member")#执行SQL语句
    print(cursor.fetchall())#获取数据
    cursor.close()#游标对象关闭
conn.close()#关闭连接