使用PyMySql连接mysql

使用PyMySql连接mysql上篇文章尝试了使用 mysql connector 模块连接 mysql 此次尝试 PyMySql 模块

一、新建表

我没有关闭数据库连接,代码如下:

import pymysql db=pymysql.connect( #创建连接mysql host='localhost', #自己电脑的ip地址 user='root', passwd='', database="runoob_db" #连接名为runoob_db的数据库 ) print(db) cursor = db.cursor() # 使用 execute() 方法执行 SQL,如果表存在则删除 cursor.execute("DROP TABLE IF EXISTS EMPLOYEE") # 使用预处理语句创建表 sql = """CREATE TABLE EMPLOYEE ( FIRST_NAME CHAR(20) NOT NULL, LAST_NAME CHAR(20), AGE INT, SEX CHAR(1), INCOME FLOAT )""" cursor.execute(sql) # 关闭数据库连接 #db.close() 

二、插入数据

import mysql.connector db=mysql.connector.connect( #创建连接mysql host='localhost', #自己电脑的ip地址 user='root', passwd='', database="runoob_db" #连接名为runoob_db的数据库 ) print(db) cursor = db.cursor() # 使用 execute() 方法执行 SQL,如果表存在则删除 cursor.execute("DROP TABLE IF EXISTS EMPLOYEE") # 使用预处理语句创建表 sql = """CREATE TABLE EMPLOYEE ( FIRST_NAME CHAR(20) NOT NULL, LAST_NAME CHAR(20), AGE INT, SEX CHAR(1), INCOME FLOAT )""" cursor.execute(sql) # SQL 插入语句 sql1 = """INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX, INCOME) VALUES ('Mac', 'Mohan', 20, 'M', 2000)""" try: # 执行sql语句 cursor.execute(sql1) # 提交到数据库执行 db.commit() except: # 如果发生错误则回滚 db.rollback() 

同时sql1也能写成这样:

sql1 = "INSERT INTO EMPLOYEE(FIRST_NAME, \ LAST_NAME, AGE, SEX, INCOME) \ VALUES ('%s', '%s', %s, '%s', %s)" % \ ('Mac', 'Mohan', 20, 'M', 2000) 
# SQL 插入语句 sql1 = """INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX, INCOME) VALUES ('Mac', 'Mohan', 20, 'M', 2000) """ sql2="""INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX, INCOME) VALUES ('ff', 'Mohan', 20, 'M', 2000) """ try: # 执行sql语句 cursor.execute(sql1) cursor.execute(sql2) # 提交到数据库执行 db.commit() except: # 如果发生错误则回滚 db.rollback() 

1

三、查询操作

# SQL 查询语句 sql = "SELECT * FROM EMPLOYEE \ WHERE INCOME > %s" % (1000) try: # 执行SQL语句 cursor.execute(sql) # 获取所有记录列表 results = cursor.fetchall() for row in results: fname = row[0] lname = row[1] age = row[2] sex = row[3] income = row[4] # 打印结果 print ("fname=%s,lname=%s,age=%s,sex=%s,income=%s" % \ (fname, lname, age, sex, income )) except: print ("Error: unable to fetch data") 

四、更新操作

将age修改为23,代码如下:

# SQL 更新语句 sql3 = "UPDATE EMPLOYEE SET AGE = 23 WHERE SEX = '%c'" % ('M') try: # 执行SQL语句 cursor.execute(sql3) # 提交到数据库执行 db.commit() except: # 发生错误时回滚 db.rollback() 

五、删除操作

删除数据表 EMPLOYEE 中 INCOME 小于 2000 的所有数据:

# SQL 删除语句 sql4 = "DELETE FROM EMPLOYEE WHERE INCOME <= %s" % (2000) try: # 执行SQL语句 cursor.execute(sql4) # 提交修改 db.commit() except: # 发生错误时回滚 db.rollback() 

六、执行事务

import pymysql db=pymysql.connect( #创建连接mysql host='localhost', #自己电脑的ip地址 user='root', passwd='', database="runoob_db" #连接名为runoob_db的数据库 ) print(db) cursor = db.cursor() # 使用 execute() 方法执行 SQL,如果表存在则删除 cursor.execute("DROP TABLE IF EXISTS EMPLOYEE") # 使用预处理语句创建表 sql = """CREATE TABLE EMPLOYEE ( FIRST_NAME CHAR(20) NOT NULL, LAST_NAME CHAR(20), AGE INT, SEX CHAR(1), INCOME FLOAT )""" cursor.execute(sql) # SQL 插入语句 sql1 = """INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX, INCOME) VALUES ('Mac', 'Mohan', 20, 'M', 2000) """ sql2="""INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX, INCOME) VALUES ('ff', 'Mohan', 20, 'M', 2001) """ try: # 执行sql语句 cursor.execute(sql1) cursor.execute(sql2) # 提交到数据库执行 db.commit() except: # 如果发生错误则回滚 db.rollback() # SQL 查询语句 sql = "SELECT * FROM EMPLOYEE \ WHERE INCOME > %s" % (1000) try: # 执行SQL语句 cursor.execute(sql) # 获取所有记录列表 results = cursor.fetchall() for row in results: fname = row[0] lname = row[1] age = row[2] sex = row[3] income = row[4] # 打印结果 print ("fname=%s,lname=%s,age=%s,sex=%s,income=%s" % \ (fname, lname, age, sex, income )) except: print ("Error: unable to fetch data") # SQL 更新语句 sql3 = "UPDATE EMPLOYEE SET AGE = 23 WHERE SEX = '%c'" % ('M') try: # 执行SQL语句 cursor.execute(sql3) # 提交到数据库执行 db.commit() except: # 发生错误时回滚 db.rollback() # SQL 删除语句 sql4 = "DELETE FROM EMPLOYEE WHERE INCOME <= %s" % (2000) try: # 执行SQL语句 cursor.execute(sql4) # 提交修改 db.commit() except: # 发生错误时回滚 db.rollback() # 关闭数据库连接 #db.close() 

注意:
找到代码要一直往下写的原因,是因为开头代码有一句删除employee表导致。因此重点掌握各个操作语句,mysql.connector同样适用这些语句,只用在开头改一下模块名即可。

import mysql.connector db=mysql.connector.connect( #创建连接mysql host='localhost', #自己电脑的ip地址 user='root', passwd='', database="runoob_db" #连接名为runoob_db的数据库 ) 
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/201535.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月20日 上午9:11
下一篇 2026年3月20日 上午9:11


相关推荐

  • data与datetime和smalldatetime之间的区别

    data与datetime和smalldatetime之间的区别date:它表示一个日子,不包含时间部分,可以表示的日期范围从公元元年1月1日到9999年12月31日。只需要3个字节的存储空间。DateTime:日期和时间部分,可以表示的日期范围从公元1753年1月1日00:00:00.000到9999年12月31日23:59:59.997,精确到3.33毫秒,需要8个字节的存储空间。smalldatetime:它只能精确到分钟,可…

    2022年5月19日
    34
  • 7. MyBatisCodeHelperPro 插件[通俗易懂]

    7. MyBatisCodeHelperPro 插件[通俗易懂]MyBatisCodeHelperPro插件       之前介绍了MyBatis的逆向工程生成实体类、自定义接口以及Mapper.xml的操作过程,很显然这样的配置工作非常繁琐且复杂,本文在介绍MyBatis动态SQL之前,先分享一款实用的MyBatisGenerator插件(MyBatisCodeHelperPro),使用这个插件可以简化开发过程,提高开发者的编码效率。第一步:File→Settings

    2025年11月25日
    7
  • 程序员提高写代码速度_学完javascript学什么

    程序员提高写代码速度_学完javascript学什么优雅的代码编写格式,提升效率的同时更美观

    2022年8月16日
    12
  • maven 快照 更新策略与发布到私服仓库方法

    maven 快照 更新策略与发布到私服仓库方法1、为什么会有快照?没有快照之前:A项目依赖于项目B,B每次改动就赋予一个新版本号,然后告诉A我改版本好了啊,每次改动都得告诉,有时忘了就麻烦了。可以看出没有快照会带来“浪费版本号”、沟通成大加大的问题。有了快照之后:A项目依赖于项目B,B每次改动都会打上时间戳,A编译时会检查B的时间戳,如果晚于本地仓库…

    2026年4月14日
    6
  • god is a girl 是什么意思_god is a girl 歌词中文

    god is a girl 是什么意思_god is a girl 歌词中文godisagirl题意:解码。将题目中的样例做差输出,打表可得到112581321所以是按斐波那契额值解码的,一开始直接算的菲波那切数没有取模,这样的话90左右就会超longlong所以数组开了100,交了一发runtime,所以得把数组开大,就对斐波那契数取个模就好了#include&lt;bits/stdc++.h&gt;usingnamespacestd;in…

    2022年10月8日
    2
  • Linux学习——基础命令、搜索命令、压缩解压命令

    Linux学习——基础命令、搜索命令、压缩解压命令学习Linux要掌握一些简单的常用的一些命令,下面就是Linux的一命令的介绍。

    2022年2月26日
    46

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号