本文使用到的pymysql为1.0.2版本

 在IDEA中配置Python参考本人写的另一篇文章

第一步:安装PyMySQL

PyMySQL用于 python连接到MySQL数据库服务器,在IDEA中安装PyMySQL如下图所示。


在终端中输入命令:pip3 install PyMySQL

python pymssql 连接sqlserver pymysql如何连接数据库_mysql

 第二步:连接数据库

1.打开数据库连接,使用方法pymysql.connect()

2.使用cursor()方法创建游标对象 

3.使用游标对象 . execute()方法执行SQL语句 

4.关闭数据库连接 ,关闭游标

以下代码修改connect中的内容即可直接运行

import pymysql
 
db = pymysql.connect(host='',#数据库所在地IP地址,本机默认localhost即可
                     user='',#数据库的用户名
                     password='',#用户密码
                     database='')#数据库的名称,不是数据库中表的名称
 
cursor = db.cursor()#创建一个游标对象

cursor.execute("SELECT VERSION()")# 执行 SQL 语句,查询数据库版本,返回一条数据
 
data = cursor.fetchone()# 使用 fetchone() 方法获取上面查询后返回的单条数据.
 
print ("Database version : %s " % data)
 
db.close()# 关闭数据库连接
cursor.close()#关闭游标对象

 第三步:向数据库中存入图片

1.打开图片,读取图片数据

2.使用游标对象 . execute()方法执行SQL语句插入图片数据


打开图片时,如果使用open('lucy.jpg')方式打开,而不在参数中添加'rb',则在执行SQL语句时,要将图片的数据使用escape_string方法进行转义,在pymysql1.0版本以上时,语句为:pymysql.converters.escape_string()

不推荐使用这种转义的方法,这种方法还需要在open函数中添加另一个参数encoding='ISO-8859-1',否则图片数据写入数据库时,会报错gbk格式或是其他格式无法解释图片数据。即使是添加了这个encoding参数,写入的数据也无法直接读取出来,读取出来会显示图片格式错误或格式不支持

import pymysql
 
db = pymysql.connect(host='',
                     user='',
                     password='',
                     database='')
#打开我目录下名为'lucy.jpg'图片
with open('lucy.jpg', 'rb') as f:
    img = f.read()

 
cursor = db.cursor()#创建一个游标对象

#使用游标对象执行插入图片数据的sql语句
sql="INSERT INTO Images  (Data) VALUES (%s)"
cursor.execute(sql ,img)
 
db.commit()#提交插入请求
 
db.close()# 关闭数据库连接
cursor.close()#关闭游标对象

第四步:从数据库中读取图片

1. execute()方法执行SQL语句读回图片数据

2. 使用fetchone()方法将图片数据写入一个文件

fetchone()也是游标对象的一个方法,该方法获取单条数据,获取下一个查询结果集,返回元组,cursor.fetchone()[0]即为提取第一个元素

import pymysql
 
db = pymysql.connect(host='',
                     user='',
                     password='',
                     database='')
#打开我目录下名为'lucy.jpg'图片
with open('lucy.jpg', 'rb') as f:
    img = f.read()

 
cursor = db.cursor()#创建一个游标对象

cursor.execute("SELECT Data FROM Images LIMIT 1")#提取数据库第一行数据

res = cursor.fetchone()[0]
with open('lc2.jpg', 'wb') as f:
    f.write(res)
 
db.close()# 关闭数据库连接
cursor.close()#关闭游标对象

附:读写图片代码及效果

import pymysql

db = pymysql.connect(host='',
                     user='',
                     password='',
                     database='',)

with open('lucy.jpg', 'rb') as f:
    img = f.read()

cursor = db.cursor()

sql="INSERT INTO Images  (Data) VALUES (%s)"
cursor.execute(sql ,img)
db.commit()

cursor.execute("SELECT Data FROM Images LIMIT 1")
res = cursor.fetchone()[0]
with open('lc2.jpg', 'wb') as f:
    f.write(res)


# 关闭数据库连接和游标连接
cursor.close()
db.close()

python pymssql 连接sqlserver pymysql如何连接数据库_数据库_02