Python 连接 mysql 详解(mysql-connector-python)
文章目录
- 1 概述
- 1.1 第三方库:mysql-connector-python
- 1.2 可视化工具:navicat
- 1.3 创建测试数据库
- 2 连接 mysql 数据库
- 2.1 创建一个连接
- 2.2 捕获连接异常
- 2.3 从配置文件中获取连接信息
- 3 执行 sql 语句
- 3.1 插入、更新、删除
- 3.2 查询
1 概述
1.1 第三方库:mysql-connector-python
pip install mysql-connector-python
1.2 可视化工具:navicat
1.3 创建测试数据库
-- 创建数据库 create database python_demo DEFAULT CHARSET utf8 COLLATE utf8_general_ci; -- 创建测试表 create table python_demo.student( sno int unsigned auto_increment comment '学号', sname varchar(30) not null comment '姓名', age int comment '年龄', birthday date comment '出生日期', primary key(sno) ) engine=innodb default charset=utf8 comment '学生信息表';
2 连接 mysql 数据库
2.1 创建一个连接
import mysql.connector # 配置连接信息 conn = mysql.connector.connect( host='127.0.0.1', port='3306', user='root', password='12345', database='python_demo' ) # 当前 mysql 版本号 print(conn.get_server_version())2.2 捕获连接异常
import mysql.connector from mysql.connector import errorcode try: # 配置连接信息 conn = mysql.connector.connect( host='127.0.0.1', port='3306', user='root', password='12345', database='python_demo' ) # 当前 mysql 版本号 print(conn.get_server_version()) # 捕获异常 except mysql.connector.Error as err: if err.errno == errorcode.ER_ACCESS_DENIED_ERROR: print('账号或密码错误!') elif err.errno == errorcode.ER_BAD_DB_ERROR: print('数据库不存在!') else: print(err) else: # 关闭连接 conn.close()2.3 从配置文件中获取连接信息
目录结构:
config.ini:
[mysql] host = 127.0.0.1 port = 3306 user = root password = 12345 database = python_demo
m1.py:
import mysql.connector from mysql.connector import errorcode import configparser # 创建配置解析器对象 config = configparser.ConfigParser() # 读取配置文件 config.read('config.ini') try: # 配置连接信息 conn = mysql.connector.connect( host=config.get('mysql', 'host'), port=config.get('mysql', 'port'), user=config.get('mysql', 'user'), password=config.get('mysql', 'password'), database=config.get('mysql', 'database') ) # 当前 mysql 版本号 print(conn.get_server_version()) # 捕获异常 except mysql.connector.Error as err: if err.errno == errorcode.ER_ACCESS_DENIED_ERROR: print('账号或密码错误!') elif err.errno == errorcode.ER_BAD_DB_ERROR: print('数据库不存在!') else: print(err) else: # 关闭连接 conn.close()3 执行 sql 语句
3.1 插入、更新、删除
- execute():用来执行 sql 语句,如:增删改查,存储过程等
- commit():用来提交事务
import mysql.connector # 配置连接信息 conn = mysql.connector.connect( host='127.0.0.1', port='3306', user='root', password='12345', database='python_demo' ) # 创建游标对象 cursor = conn.cursor() # 操作数据:插入、修改、删除 同理,注:数据类型均可用 %s # 操作一条数据 sql = 'insert into student(sname, age, birthday) values(%s, %s, %s);' param = ('张三', '18', '1994-12-08') cursor.execute(sql, param) # 操作多条数据 sql = 'insert into student(sname, age, birthday) values(%s, %s, %s);' param = [('李四', '20', '1992-10-05'), ('王五', '16', '1996-05-26'), ('赵六', '08', '1994-05-26')] cursor.executemany(sql, param) # 提交数据 conn.commit() # 关闭游标和数据库连接 cursor.close() conn.close()3.2 查询
import mysql.connector # 配置连接信息 conn = mysql.connector.connect( host='127.0.0.1', port='3306', user='root', password='12345', database='python_demo' ) # 创建游标对象 cursor = conn.cursor() # 查询数据 sql = 'select sno, sname, age, birthday from student where sno >= %s' param = (1,) cursor.execute(sql, param) result = cursor.fetchall() # 打印结果 for row in result: print(row) # 关闭游标和数据库连接 cursor.close() conn.close()
免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!



