爬虫文件存储-1:mysql
1.连接并创建数据库
import pymysql db = pymysql.connect(host='localhost', user='root', password='root', port=3306) cursor = db.cursor() cursor.execute('SELECT VERSION()') data = cursor.fetchone() print('Database version:', data) cursor.execute("CREATE DATABASE spiders DEFAULT CHARACTER SET utf8") db.close()
执行结果:
Database version: ('5.7.23',)
结果是创建一个名为spiders的数据库
2.创建数据表
注意:这次连接数据库时需要指定创建数据表所在的数据库,也就是db参数的值
import pymysql db = pymysql.connect(host='localhost', user='root', password='root', port=3306, db='spiders') cursor = db.cursor() sql = 'CREATE TABLE IF NOT EXISTS students (id VARCHAR(255) NOT NULL, name VARCHAR(255) NOT NULL, age INT NOT NULL, PRIMARY KEY (id))' cursor.execute(sql) db.close()
3.插入一条数据
import pymysql db = pymysql.connect(host='localhost', user='root', password='root', port=3306, db='spiders') cursor = db.cursor() id = '20120001' user = 'Bob' age = 20 sql = 'INSERT INTO students(id, name, age) values(%s, %s, %s)' try: cursor.execute(sql, (id, user, age)) db.commit() except: db.rollback() db.close()
通用写法:
这样一来,若是写入更多值的话直接给data字典增加数据就行了,就不用其他sql语句了,推荐使用
import pymysql db = pymysql.connect(host='localhost', user='root', password='root', port=3306, db='spiders') cursor = db.cursor() table = 'students' data = { 'id': '20120002', 'name': 'Bob11', 'age': 200 } keys = ', '.join(data.keys()) values = ', '.join(['%s'] * len(data)) sql = 'INSERT INTO {table} ({keys}) VALUES ({values})'.format(table=table, keys=keys, values=values) try: if cursor.execute(sql, tuple(data.values())): print('Successful') db.commit() except: print('Failed') db.rollback() db.close()
4.更新数据
import pymysql db = pymysql.connect(host='localhost', user='root', password='root', port=3306, db='spiders') cursor = db.cursor() sql = 'UPDATE students SET age = %s WHERE name = %s' try: cursor.execute(sql, (25, 'Bob')) db.commit() except: db.rollback() db.close()
通用写法:
根据主键进行判断,若主键存在则更新,若不存在则插入,推荐使用
import pymysql db = pymysql.connect(host='localhost', user='root', password='root', port=3306, db='spiders') cursor = db.cursor() table = 'students' data = { 'id': '20120001', 'name': 'Bob', 'age': 21 } keys = ', '.join(data.keys()) values = ', '.join(['%s'] * len(data)) sql = 'INSERT INTO {table}({keys}) VALUES ({values}) ON DUPLICATE KEY UPDATE'.format(table=table, keys=keys, values=values) update = ','.join([" {key} = %s".format(key=key) for key in data]) sql += update try: if cursor.execute(sql, tuple(data.values()) * 2): print('Successful') db.commit() except: print('Failed') db.rollback() db.close()
5.删除数据
import pymysql db = pymysql.connect(host='localhost', user='root', password='root', port=3306, db='spiders') cursor = db.cursor() table = 'students' condition = 'age > 20' sql = 'DELETE FROM {table} WHERE {condition}'.format(table=table, condition=condition) try: cursor.execute(sql) db.commit() except: db.rollback() db.close()
6.查询数据
import pymysql db = pymysql.connect(host='localhost', user='root', password='root', port=3306, db='spiders') cursor = db.cursor() sql = 'SELECT * FROM students WHERE age >= 20' try: cursor.execute(sql) print('Count:', cursor.rowcount) row = cursor.fetchone() while row: print('Row:', row) row = cursor.fetchone() except: print('Error')
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)