Python3 操作 MySQL

发布时间:2026/7/28 17:45:11

Python3 操作 MySQL 一、基本介绍Python3 操作 MySQL 数据库 可以使用的模块是pymysql和MySQLdb。这个两个模块都是通过自己的 API 执行原生的 SQL 语句实现的。MySQLdb 是最早出现的一个操作 MySQL 数据库的模块核心由C语言编写接口精炼性能最棒缺点是环境依赖较多安装稍复杂近两年已停止更新且只支持Python2.x不支持Python3.x。pymysql为替代MySQLdb而生纯Python实现API 的接口与MySQLdb完全兼容安装方便支持Python3。2020 已经离我们很近了所以我们这里只聊pymysql二、 安装包pymysqlpymsql是Python中操作MySQL的模块(Linux 机器)shell pip3 install pymysql三、 基本操作1. 创建表import pymysql # 创建连接 conn pymysql.connect(host172.16.153.10, port3306, userroot, passwd123, dbshark_db, charsetutf8mb4) # 获取游标对象 cursor conn.cursor() # 定义 sql 语句 create_table_sql create table t1 (id int auto_increment primary key, name varchar(10) not null, age int not null) # 执行 sql 语句 cursor.execute(create_table_sql) # 提交更改 conn.commit() # 关闭游标对象 cursor.close() # 关闭连接对象 conn.close()2. 插入数据一次插入一条数据一次插入一条数据, 并且使用变量占位符 insert_data_sql insert into t1(name, age) values(%s, %s); row cursor.execute(insert_data_sql, (shark, 18)) conn.commit() cursor.close() conn.close()一次插入多条数据定义插入数据的语句 many_sql insert into t1 (name, age) values(%s, %s) 一次插入多条数据 row cursor.executemany(many_sql, [(shark1, 18),(xiguatian, 20),(qf, 8)]) conn.commit() cursor.close() conn.close()3. 查询数据a. 获取到的数据是元组类型定义一个查询语句 query_sql select id,name,age from t1 where name%s; 执行查询语句并且返回得到结果的行数 row_nums cursor.execute(query_sql, (shark2)) 获取到数据结果集具有迭代器的特性: 1. 可以通过索引取值可以切片 2. 结果集中的数据每次取出一条就少一条 获取数据中的第一条 10元 one_data cursor.fetchone() 获取数据中的指定数量的条目 20元 many_data cursor.fetchmany(2) 获取数据中剩余的全部数据 70元 all_data cursor.fetchall() cursor.close() conn.close() print(row_nums) print(one_data) print(many_data) print(all_data)b. 获取到的数据是字典类型的游标设置为字典类型 cursor conn.cursor(cursorpymysql.cursors.DictCursor) query_sql select id,name,age from t1 where name%s; row_nums cursor.execute(query_sql, (shark2)) 获取结果的操作和之前的一样 result cursor.fetchone() conn.commit() cursor.close() conn.close() print(result)四、应该加入异常处理import pymysql # 创建连接 conn pymysql.connect(host172.16.153.10, port3306, userroot, passwd123, dbshark_db) # 创建游标 cursor conn.cursor() try: cursor.executemany(INSERT INTO para5(name,age) VALUES(%s,%s);, [(次牛444, 12), (次牛2, 11), (次牛3, 10)]) conn.commit() except Exception as e: # 如果执行sql语句出现问题则执行回滚操作 conn.rollback() print(e) finally: # 不论try中的代码是否抛出异常 # 这里都会执行关闭游标和数据库连接 cursor.close() conn.close()五、 获取新增数据的自增 ID# 先连接 cursor conn.cursor() cursor.executemany(insert into student(name,age, phone)values(%s,%s, %s), [ (superman5110,18, 13295686769)] ) conn.commit() cursor.close() conn.close() # 获取最新自增ID new_id cursor.lastrowid6. 操作存储过程(扩展)无参数存储过程cursor.callproc(p1) #等价于cursor.execute(call p1())有参存储过程cursor.callproc(p2, args(1, 22, 3, 4)) #获取执行完存储的参数,参数开头 cursor.execute(select p2,_p2_1,_p2_2,_p2_3) #{_p2_1: 22, p2: None, _p2_2: 103, _p2_3: 24} row_1 cursor.fetchone()

相关新闻