Python3使用PyMySQL连接MySQL

本文内容皆为作者原创,码字不易,如需转载,请注明出处:https://www.cnblogs.com/temari/p/13162124.html

前提介绍

【功能实现】:

1.登录本地MySQL Server创建数据库和表,Python3使用PyMySQL连接本地MySQL服务器,实现对数据库的表进行简单Insert操作。

【软件配置】:

1.MySQL服务器:MySQL 8.0.20
2.Pymsql版本:Pymsql 0.9.3
3.Python版本:Python3
4.Navicat for MySQL版本:Navicat 11
5.PyCharm版本:PyCharm Community Edition 2020.1.2 x64

一,本地安装MySQL Server

Python3使用PyMySQL连接本地MySQL服务器,首先要确保本地已安装MySQL Server,没有安装的朋友可以参考上一篇博客,链接:

https://www.cnblogs.com/temari/p/13156538.html

二,创建数据库和表

2.1 创建数据库
#创建数据库PythonDB,默认编码格式为utf8,数据库的校验规则大小写不敏感。
mysql> CREATE DATABASE IF NOT EXISTS PythonDB DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
Query OK, 1 row affected, 2 warnings (0.02 sec)
2.2 选择数据库
mysql> use PythonDB
Database changed
2.3 创建表

选择数据库PythonDB,创建学生表,课程表和学生选课表,表结构如下:

Student表:

学号 姓名 性别 年龄 所在系
Sno Sname Ssex Sage Sdept

Course表:

课程号 课程名 先行课 学号
Cno Cname Cpno Ccredit

SC表:

学号 课程号 成绩
Sno Cno Grade

创建表SQL语句

#创建表Student
mysql> CREATE TABLE Student(Sno CHAR(9) PRIMARY KEY,
    ->   Sname CHAR(20) UNIQUE,
    ->   Ssex CHAR(2),
    ->   Sage SMALLINT,
    ->   Sdept CHAR(20)
    -> );
Query OK, 0 rows affected (0.05 sec)
#创建表Course
mysql> CREATE TABLE Course
    -> ( Cno CHAR(4) PRIMARY KEY,
    -> Cname CHAR(40),
    -> Cpno CHAR(4),
    -> Ccredit SMALLINT,
    -> FOREIGN KEY(Cpno) REFERENCES Course(Cno)
    -> );
Query OK, 0 rows affected (0.04 sec)
#创建表SC
mysql> CREATE Table SC
    -> ( Sno CHAR(9),
    -> Cno CHAR(4),
    -> Grade SMALLINT,
    -> PRIMARY KEY (Sno,Cno),
    -> FOREIGN KEY (Sno) REFERENCES Student(Sno),
    -> FOREIGN KEY (Cno) REFERENCES Course(Cno)
    -> );
Query OK, 0 rows affected (0.04 sec)
#备注:->为换行符标识。

以管理员身份运行cmd窗口,cd到bin目录,执行以上sql语句,数据库和表创建完毕。

2.4 查看表结构

数据库和表创建成功后,打开软件Navicat for MySQL登录数据库,查看已创建的数据库和表结构,如图:

三,安装Pymysql

Python3使用Pymysql连接MySQL数据库,PyMySQL是在Python3.x版本中用于连接MySQL服务器的一个库,Python2中则使用mysqldb。使用pip命令安装Pymysql。以管理员身份运行cmd窗口,cd命令进入pip安装目录,输入命令pip install pymysql。如图:

看到“Successfully installed pymysql...”,表示已经安装成功。

四,编写Python程序操作表结构

打开PyCharm,创建项目,新建python文件,编写程序,进行数据库操作,以向数据库中插入数据为例。

4.1 Python程序
import pymysql
# 打开数据库连接
db = pymysql.connect(host='127.0.0.1', port=3306,user='root',password='123456',database='PythonDB',charset='utf8')
# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()
#学生表新增一条记录
SqlStudentInsert = """
                   INSERT INTO Student(Sno,Sname, Ssex, Sage, Sdept) VALUES ('200215121', '李勇','男', 20, 'CS')
                   """
#课程表新增一条记录
SqlCourseInsert = """
                  INSERT INTO Course (Cno, Cname, Cpno, Ccredit) VALUES ('2', '数学', NULL, 2)
"""
#学生选课表新增一条记录
SqlSCInsert = """
INSERT INTO SC(Sno,Cno, Grade)VALUES ('200215121', '2', 92)
"""
# 使用 execute() 方法执行 SQL
try:
   # 执行sql语句
   cursor.execute(SqlStudentInsert)
   cursor.execute(SqlCourseInsert)
   cursor.execute(SqlSCInsert)
   # 提交到数据库执行
   db.commit()
   #cursor.close()
except Exception as e:
    raise e
   # 如果发生错误则回滚
    db.rollback()
cursor.close()
# 关闭数据库连接
db.close()
4.2 执行结果

程序运行结果如下:

4.3 查看表结构

使用软件Navicat for MySQL登录数据库,查询表,查看新增数据已更新,如图:

Student表:


SC表:

Course表:

此处Python3程序只举例了Pymysql对MySQL数据库的简单的INSERT操作,主要了解Python3用Pymysql连接数据库的操作流程。Pymysql支持增删改查功能,后面有兴趣可以研究。

五.遇到的问题

1.程序在调试时报错:“pymysql.err.ProgrammingError: (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '')' at line 1")”,如图:

问题分析:刚开始网上查询了些文章,分析是SQL语句字符串转义引起的,按照文章的解决办法调整了后,仍未解决。后来发现SQL语句等号两边未留空格,如截图中的【SqlStudentInsert="""】,添加了空格后调试仍报错。后来不知道改了哪里,莫名又成功了。到现在我也不太明白是哪里出错了,这个问题先登记,以后遇到再解决。

猜你喜欢

转载自www.cnblogs.com/temari/p/13162124.html