鱼C论坛

 找回密码
 立即注册
查看: 2992|回复: 9

我想将图片的二进制数据 写入mysql数据库 请问哪位大佬能帮忙

[复制链接]
发表于 2021-1-2 14:24:23 | 显示全部楼层 |阅读模式
10鱼币
现有图片爬虫一只 能够采集大量的数据

这是爬虫文件的github仓库:https://github.com/Hope-wind/python/blob/master/%E5%9B%BE%E7%89%87/%E6%AC%A1%E5%85%83/scrapy.py

但是硬盘一直在咆哮 让我别老放她身上



问题:我想把图片的二进制数据放到mysql数据库
请问哪位大佬能够帮忙?

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-1-2 14:49:57 | 显示全部楼层
图片并不适合用来存放进数据库,
通常情况下,数据库保存的是图片存放的路径,
假设以上你已经知晓,但还是期望图片内容本身存放入数据库,

代码中55行,你已经得到图片的二进制数据了


简单些来讲,你可以直接把这个二进制数据插入数据库中就可以了


insert 语句 插入数据sql语句应该没问题吧


高级一点, 你需一个二进制文件缓存队列,因为往数据库写操作也很慢的,


下载归下载,写入归写入.


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-1-2 15:44:17 | 显示全部楼层
孤独的嫖客 发表于 2021-1-2 14:49
图片并不适合用来存放进数据库,
通常情况下,数据库保存的是图片存放的路径,
假设以上你已经知晓,但还是期 ...

所以我该另外写一个专门用来进行写入的函数吗(用多线程)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-1-2 19:08:50 | 显示全部楼层
孤独的嫖客 发表于 2021-1-2 14:49
图片并不适合用来存放进数据库,
通常情况下,数据库保存的是图片存放的路径,
假设以上你已经知晓,但还是期 ...

还有就是 不知为何我无法使用pymysql
这是报错信息
Traceback (most recent call last):
  File "/home/wallen/.local/lib/python3.9/site-packages/pymysql/connections.py", line 569, in connect
    sock = socket.create_connection(
  File "/usr/lib/python3.9/socket.py", line 822, in create_connection
    for res in getaddrinfo(host, port, 0, SOCK_STREAM):
  File "/usr/lib/python3.9/socket.py", line 953, in getaddrinfo
    for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
socket.gaierror: [Errno -2] Name or service not known

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/wallen/demo.py", line 3, in <module>
    db = pymysql.connect("lolcalhost","root","0xFFFFFFFF","dbforpymysql")
  File "/home/wallen/.local/lib/python3.9/site-packages/pymysql/__init__.py", line 94, in Connect
    return Connection(*args, **kwargs)
  File "/home/wallen/.local/lib/python3.9/site-packages/pymysql/connections.py", line 327, in __init__
    self.connect()
  File "/home/wallen/.local/lib/python3.9/site-packages/pymysql/connections.py", line 619, in connect
    raise exc
pymysql.err.OperationalError: (2003, "Can't connect to MySQL server on 'lolcalhost' ([Errno -2] Name or service not known)")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-1-2 22:16:28 | 显示全部楼层
风尘岁月 发表于 2021-1-2 19:08
还有就是 不知为何我无法使用pymysql
这是报错信息
Traceback (most recent call last):

假设你的数据库可以正常远程的前提下,你的代码
 db = pymysql.connect("lolcalhost","root","0xFFFFFFFF","dbforpymysql")
建议修改为这种格式
# 连接数据库
connect = pymysql.connect(
    host='localhost',
    port=3306,
    user='root',
    passwd='root',
    db='python',
    charset='utf8'
)

然后看看会不会报错

然后数据库插入/更新问题
每插入一条都执行一个SQL语句,那么需要执行除了连接和关闭之外的所有步骤N次,这样是非常耗时的,可选的优化方式:
在每个insert语句中写入多行,批量插入
可以参考这个帖子
https://blog.csdn.net/colourless/article/details/41444069
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-1-3 08:09:49 | 显示全部楼层
孤独的嫖客 发表于 2021-1-2 22:16
假设你的数据库可以正常远程的前提下,你的代码

建议修改为这种格式

还是不行啊 大佬
而且看了那篇帖子 我也无法安装MySQL-python
我的是https://pypi.tuna.tsinghua.edu.cn/simple镜像源
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-1-3 08:13:38 | 显示全部楼层
风尘岁月 发表于 2021-1-3 08:09
还是不行啊 大佬
而且看了那篇帖子 我也无法安装MySQL-python
我的是https://pypi.tuna.tsinghua.edu.c ...

数据库是否支持远程,这个你检查了吗?
可以用可视化数据库客户端来快速测试数据库连接
常见软件Navicat
我举例的帖子,没说让你换模块
只是让你参考他写的sql语句
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-1-3 08:13:43 | 显示全部楼层
孤独的嫖客 发表于 2021-1-2 22:16
假设你的数据库可以正常远程的前提下,你的代码

建议修改为这种格式

我觉得应该放弃这种方式 改用JDBC来操作数据库了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-1-3 09:49:18 | 显示全部楼层
孤独的嫖客 发表于 2021-1-3 08:13
数据库是否支持远程,这个你检查了吗?
可以用可视化数据库客户端来快速测试数据库连接
常见软件Navicat
...

数据库连线没有问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-1-3 22:51:25 | 显示全部楼层
直接将图片以二进制写入数据库?
别吧,一张图片几十K,确定不先压缩一下?
使用zlib压缩二进制,然后使用base64编码,以字符串方式存入数据库
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-16 21:05

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表