Python 如何连接 MySql 数据库

273 阅读2分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

使用爬虫爬数据,总要涉及到数据持久化,也就是数据存储的问题。

我们可以根据具体情况把数据保存在本地 txt 文件里,excel 里,csv 里等等,当然也可以存储在数据库里。

本篇博客主要记录如何通过 Python 连接 MySQL 数据库,并实现 增删改查 操作的。

1. 配置环境

首先需要安装 MySQL 数据库和 pymysql 库。

MyQL 数据库的安装和配置过程略去不讲,自行查阅资料。

pymysql 库是 python 用来操作 MySQL 数据库的一个第三方库,安装命令如下:

pip install pymysql

2. 创建数据库和数据表

MySQL 数据库中设置好用户名,密码,端口等,创建好数据库和数据表。

如上示例,是我创建的数据库 TopicDB 和数据表 QuestionsTable

3. 连接数据库

将自己的数据库的 IP端口用户名密码 等参数填进去,运行即可完成数据库的连接。

import pymysql

db = pymysql.connect(host='xxx.xxx.xxx.xxx', port=3306, user='smartcrane', passwd='xxxxxx', db='TopicDB', charset='utf8')
cursor = db.cursor()

如果数据库是本地的话,host 可以填 127.0.0.1localhost

4. 增删改查

通过 pymysql 库操作数据库,实际上也是通过执行 SQL 语句。也就是说,自行构造 SQL 语句的字符串 sql ,然后通过 cursor.excute(sql) 执行。

具体的 SQL 语法这里略去不讲,请自行搜索学习,此处仅讲解如何通过 Python 操作数据库。

4.1 查询操作

示例代码如下:

def queryDB():
    # 查询数据库
    try:
        sql = "select * from QuestionsTable"
        cursor.execute(sql)
        data = cursor.fetchone()
        print(data)
    except Exception as e:
        print(e)

查询数据时,在执行完 cursor.execute(sql) 操作之后,可以通过 fetchone()fetchall()fetchmany(n) 函数来获取查询结果,三个函数的区别如下。

  • 执行 cursor.fetchone() 每次取一条数据。

  • 执行 cursor.fetchall() 一次性取全部数据

  • 执行 cursor.fetchmany(n) 每次取 n 条数据。

4.2 增删改操作

示例代码如下:

def insertDB(id, title, url):
    #插入数据
    try:
        sql = "insert into QuestionsTable values (%s,'%s','%s')"%(id, title, url)
        cursor.execute(sql)
        db.commit()
    except Exception as e:
        db.rollback()
        print(e)

更新数据,删除数据等操作的写法跟插入数据的写法一样,只要修改对应 sql 语句即可。

如果数据库操作报错了。调试的话,首先把sql 字符串打印出来,复制到 MySQL 数据库中执行看是否有误。

大部分的情况下,都是 SQL 语句有误引起的。

5. 关闭数据库连接

程序运行结束后,需要断开数据库连接。

示例代码如下:

# 关闭光标对象
cursor.close()
# 关闭数据库连接
db.close()