Django 用户认证 用户 邮箱登录 邮箱注册 ORM or,and,not form.py FORM ModelForm Paginator 分页 HTMl JQuery 定位元素 ajax django切片 restfulapi 跨域 Ubantu Python Mysql Scrapy 爬虫 导出 Python读写 Pycharm 破解 session re sqlit3 生成式 其他 Prism 富文本 CSS Nginx 部署 请求头 抓包 协议 selenium Ubuntu 宝塔 AI Comfy-ui ollama dify open-webui Git docker
pymysql 的使用
张建行 2021年11月10日 15:41 35 文章标签: Django ORM ModelForm Python Mysql Scrapy 爬虫 导出 sqlit3

import pymysql
 
class JobspiderPipeline(object):
    def __init__(self):
        # 1. 建立数据库的连接
        self.connect = pymysql.connect(
            host='localhost',
            port=3306,
            user='root',
            passwd='123456',
            db='job51',
            charset='utf8'
        )
        # 2. 创建一个游标cursor, 是用来操作表。
        self.cursor = self.connect.cursor()
 
        # MongoDB/Redis: NoSQL非关系型数据库,存储字典结构的数据,一个数据库中可以有多个表,表与表之间是独立的。
        # 文章和评论之间是 一对多 的关系
        # {'title': 'Python是什么?', 'comments': ['不知道', '不清楚', '很牛逼'...]}
        # {'title': 'Python是什么?', 'comments': ['不知道', '不清楚', '很牛逼'...]}
 
        # MySQL/Sqlite3: SQL关系型数据库,存储bool类型、字符串类型、数值类型的数据,不能存集合。
        # 文章表
        # id  title
        # 1   Python是什么?
        # 2   Java是什么?
 
        # 评论表
        # id  content  article
        # 1    很不错    1
        # 1    很不错    1
        # 1    很不错    1
        # 1    很不错    2
 
    def process_item(self, item, spider):
 
            # 3. 将Item数据放入数据库,默认是同步写入。
            # INSERT INTO job(zwmc); DELETE DATABASE job; VALUES ('123') SQL注入
            insert_sql = "INSERT INTO job(zwmc, zwxz, zpyq, gwyq) VALUES ('%s', '%s', '%s', '%s')" % (item['zwmc'], item['zwxz'], item['zpyq'], item['gwyq'])
            self.cursor.execute(insert_sql)
 
            # 4. 提交操作
            self.connect.commit()
 
    def close_spider(self, spider):
        self.cursor.close()
        self.connect.close()