数据存储在mysql的两种方式
发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,下文主要给大家带来数据存储在mysql的两种方式,希望这些内容能够带给大家实际用处,这也是我编辑数据存储在mysql的两种方式这篇文章的主要目的。好了,废话不多说,大家直接看下文吧。一般将数据保存到M
千家信息网最后更新 2026年10月31日数据存储在mysql的两种方式
下文主要给大家带来数据存储在mysql的两种方式,希望这些内容能够带给大家实际用处,这也是我编辑数据存储在mysql的两种方式这篇文章的主要目的。好了,废话不多说,大家直接看下文吧。
一般将数据保存到MySQL中有两种方式,同步模式和异步模式。
同步模式
同步模式是采用SQL语句,将数据插入到数据库中。但是要注意的是Scrapy的解析速度要远大于MySQL的入库速度,当有大量解析的时候,MySQL的入库就可能会阻塞。
import MySQLdbclass MysqlPipeline(object): def __init__(self): self.conn = MySQLdb.connect('127.0.0.1','root','root','article_spider',charset="utf8",use_unicode=True) self.cursor = self.conn.cursor() def process_item(self, item, spider): insert_sql = """ insert into jobbole_article(title,create_date,url,url_object_id) VALUES (%s,%s,%s,%s) """ self.cursor.execute(insert_sql,(item["title"],item["create_date"],item["url"],item["url_object_id"])) self.conn.commit()异步模式
采用同步模式可能会产生阻塞,我们可以使用Twisted将MySQL的入库和解析变成异步操作,而不是简单的execute,commit同步操作。

关于MySQL的配置,我们可以直接在配置文件配置数据库:
MYSQL_HOST = "127.0.0.1"MYSQL_DBNAME = "article_spider"MYSQL_USER = "root"MYSQL_PASSWORD = "root"
在settings中的配置,我们通过在pipeline中定义from_settings获取settings对象,可以直接获取settings配置文件中的值。
使用Twisted提供的异步容器连接MySQL:
import MySQLdbimport MySQLdb.cursorsfrom twisted.enterpriseimport adbapi
使用adbapi可以使mysqldb的一些操作变成异步化的操作
使用cursors进行sql语句的执行和提交
代码部分:
class MysqlTwistedPipline(object): def __init__(self,dbpool): self.dbpool = dbpool @classmethod def from_settings(cls,settings): dbparms = dict( host = settings["MYSQL_HOST"], db = settings["MYSQL_DBNAME"], user = settings["MYSQL_USER"], passwd = settings["MYSQL_PASSWORD"], charset = 'utf8', cursorclass = MySQLdb.cursors.DictCursor, use_unicode=True, ) dbpool = adbapi.ConnectionPool("MySQLdb",**dbparms) return cls(dbpool) def process_item(self, item, spider): #使用Twisted将mysql插入变成异步执行 #runInteraction可以将传入的函数变成异步的 query = self.dbpool.runInteraction(self.do_insert,item) #处理异常 query.addErrback(self.handle_error,item,spider) def handle_error(self,failure,item,spider): #处理异步插入的异常 print(failure) def do_insert(self,cursor,item): #会从dbpool取出cursor #执行具体的插入 insert_sql = """ insert into jobbole_article(title,create_date,url,url_object_id) VALUES (%s,%s,%s,%s) """ cursor.execute(insert_sql, (item["title"], item["create_date"], item["url"], item["url_object_id"])) #拿传进的cursor进行执行,并且自动完成commit操作以上代码部分,除了do_insert之外,其它均可复用。
对于以上关于数据存储在mysql的两种方式,大家是不是觉得非常有帮助。如果需要了解更多内容,请继续关注我们的行业资讯,相信你会喜欢上这些内容的。
数据
模式
同步
配置
方式
存储
内容
下文
代码
数据库
文件
语句
速度
部分
处理
阻塞
函数
可以使
实际
容器
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
手冲咖啡和咖啡机区别
上海挚品互联网科技有限公司
广州为想互联网科技有限公司
云信互联网科技有限公司
圆梦互联网科技
科技信息互联网
西安互联网科技
唐信互联网科技
迪茉互联网科技
互联网金融科技平台
亿人帮互联网科技
互联网科技咨询
恒生科技互联网指数分析
玖二柒互联网科技公司待遇
西安小鹰速贷互联网科技有限公司
互联网科技机房
西安左小互联网科技有限公司
安徽九吞吴互联网科技有限公司
恒生科技互联网指数十大成分股
株洲百竞科技的互联网营销顾问
国智互联网科技
百单互联网科技有限公司
互联网科技论坛
互联网科技公司名称
央行互联网金融科技公司
链环科技传统企业怎么转型互联网
中国科技创新与世界互联网大会
互联网科技的全部知识
广州百诚互联网科技有限公司官网
互联网科技平台产品运营