Python链接MySQL
本文介绍Python3连接MySQL的第三方库--PyMySQL的基本使用。
PyMySQL介绍
PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中则使用mysqldb。
Django中也可以使用PyMySQL连接MySQL数据库。
PyMySQL安装
使用pycharm安装PyMySQL
点击File-->右键Settings-->左侧:Project:文件夹名字-->Project Interpreter-->右侧Project Interpreter-->Python安装版本-->最右侧点击+号-->搜索框中搜索pymysql-->左下方点击Install Package
pip3/pip install pymysql
在Pycharm中生成数据库
Pycharm点击view-->Tool Bottons-->Pycharn右上方出现Database点击进去-->左上方加号
到此为止,相关操作结束
连接数据库
注意事项
在进行本文以下内容之前需要注意:
- 你有一个MySQL数据库,并且已经启动。
- 你有可以连接该数据库的用户名和密码
- 你有一个有权限操作的database
基本使用
# 导入pymysql模块 import pymysql # 连接database conn = pymysql.connect(host=“你的数据库地址”, user=“用户名”,password=“密码”,database=“数据库名”,charset=“utf8”) # 得到一个可以执行SQL语句的光标对象 cursor = conn.cursor() # 定义要执行的SQL语句 sql = """ CREATE TABLE USER1 ( id INT auto_increment PRIMARY KEY , name CHAR(10) NOT NULL UNIQUE, age TINYINT NOT NULL )ENGINE=innodb DEFAULT CHARSET=utf8; """ # 执行SQL语句 cursor.execute(sql) # 关闭光标对象 cursor.close() # 关闭数据库连接 conn.close()
返回字典格式数据:
# 导入pymysql模块 import pymysql # 连接database conn = pymysql.connect(host=“你的数据库地址”, user=“用户名”,password=“密码”,database=“数据库名”,charset=“utf8”) # 得到一个可以执行SQL语句并且将结果作为字典返回的游标 cursor = conn.cursor(cursor=pymysql.cursors.DictCursor) # 定义要执行的SQL语句 sql = """ CREATE TABLE USER1 ( id INT auto_increment PRIMARY KEY , name CHAR(10) NOT NULL UNIQUE, age TINYINT NOT NULL )ENGINE=innodb DEFAULT CHARSET=utf8; """ # 执行SQL语句 cursor.execute(sql) # 关闭光标对象 cursor.close() # 关闭数据库连接 conn.close()
注意:
charset=“utf8”,编码不要写成"utf-8"
增删改查操作
增
# 导入pymysql模块 import pymysql # 连接database conn = pymysql.connect(host=“你的数据库地址”, user=“用户名”,password=“密码”,database=“数据库名”,charset=“utf8”) # 得到一个可以执行SQL语句的光标对象 cursor = conn.cursor() sql = "INSERT INTO USER1(name, age) VALUES (%s, %s);" username = "Alex" age = 18 # 执行SQL语句 cursor.execute(sql, [username, age]) # 提交事务 conn.commit() cursor.close() conn.close()
插入数据失败回滚
# 导入pymysql模块 import pymysql # 连接database conn = pymysql.connect(host=“你的数据库地址”, user=“用户名”,password=“密码”,database=“数据库名”,charset=“utf8”) # 得到一个可以执行SQL语句的光标对象 cursor = conn.cursor() sql = "INSERT INTO USER1(name, age) VALUES (%s, %s);" username = "Alex" age = 18 try:# 执行SQL语句cursor.execute(sql, [username, age])# 提交事务conn.commit() except Exception as e:# 有异常,回滚事务conn.rollback() cursor.close() conn.close()
获取插入数据的ID(关联操作时会用到)
# 导入pymysql模块 import pymysql # 连接database conn = pymysql.connect(host=“你的数据库地址”, user=“用户名”,password=“密码”,database=“数据库名”,charset=“utf8”) # 得到一个可以执行SQL语句的光标对象 cursor = conn.cursor() sql = "INSERT INTO USER1(name, age) VALUES (%s, %s);" username = "Alex" age = 18 try:# 执行SQL语句cursor.execute(sql, [username, age])# 提交事务conn.commit()# 提交之后,获取刚插入的数据的IDlast_id = cursor.lastrowid except Exception as e:# 有异常,回滚事务conn.rollback() cursor.close() conn.close()
批量执行
# 导入pymysql模块 import pymysql # 连接database conn = pymysql.connect(host=“你的数据库地址”, user=“用户名”,password=“密码”,database=“数据库名”,charset=“utf8”) # 得到一个可以执行SQL语句的光标对象 cursor = conn.cursor() sql = "INSERT INTO USER1(name, age) VALUES (%s, %s);" data = [("Alex", 18), ("Egon", 20), ("Yuan", 21)] try:# 批量执行多条插入SQL语句cursor.executemany(sql, data)# 提交事务conn.commit() except Exception as e:# 有异常,回滚事务conn.rollback() cursor.close() conn.close()
删
# 导入pymysql模块 import pymysql # 连接database conn = pymysql.connect(host=“你的数据库地址”, user=“用户名”,password=“密码”,database=“数据库名”,charset=“utf8”) # 得到一个可以执行SQL语句的光标对象 cursor = conn.cursor() sql = "DELETE FROM USER1 WHERE id=%s;" try:cursor.execute(sql, [4])# 提交事务conn.commit() except Exception as e:# 有异常,回滚事务conn.rollback() cursor.close() conn.close()
改
# 导入pymysql模块 import pymysql # 连接database conn = pymysql.connect(host=“你的数据库地址”, user=“用户名”,password=“密码”,database=“数据库名”,charset=“utf8”) # 得到一个可以执行SQL语句的光标对象 cursor = conn.cursor() # 修改数据的SQL语句 sql = "UPDATE USER1 SET age=%s WHERE name=%s;" username = "Alex" age = 80 try:# 执行SQL语句cursor.execute(sql, [age, username])# 提交事务conn.commit() except Exception as e:# 有异常,回滚事务conn.rollback() cursor.close() conn.close()
查
查询单条数据
# 导入pymysql模块 import pymysql # 连接database conn = pymysql.connect(host=“你的数据库地址”, user=“用户名”,password=“密码”,database=“数据库名”,charset=“utf8”) # 得到一个可以执行SQL语句的光标对象 cursor = conn.cursor() # 查询数据的SQL语句 sql = "SELECT id,name,age from USER1 WHERE id=1;" # 执行SQL语句 cursor.execute(sql) # 获取单条查询数据 ret = cursor.fetchone() cursor.close() conn.close() # 打印下查询结果 print(ret)
查询多条数据
# 导入pymysql模块 import pymysql # 连接database conn = pymysql.connect(host=“你的数据库地址”, user=“用户名”,password=“密码”,database=“数据库名”,charset=“utf8”) # 得到一个可以执行SQL语句的光标对象 cursor = conn.cursor() # 查询数据的SQL语句 sql = "SELECT id,name,age from USER1;" # 执行SQL语句 cursor.execute(sql) # 获取多条查询数据 ret = cursor.fetchall() cursor.close() conn.close() # 打印下查询结果 print(ret)
进阶用法
# 可以获取指定数量的数据 cursor.fetchmany(3) # 光标按绝对位置移动1 cursor.scroll(1, mode="absolute") # 光标按照相对位置(当前位置)移动1 cursor.scroll(1, mode="relative")
转载于:https://www.cnblogs.com/bypp/p/8615746.html
Python链接MySQL相关推荐
- 链接mysql_使用python链接mysql及redis(缓存型数据库)
python链接数据库mysql操作,首先我们需要借助第三方库pymysql. cmd终端下载:pip install pymysql import pymysql#链接数据库db = pymysql ...
- python链接mysql系统结构设计_MySQLpython交互
MySQL&python交互 一.Python操作MySQL步骤(原始的执行SQL语句) 引入pymysql模块 image.png from pymysql import * Connect ...
- Python --链接MYSQL数据库与简单操作 含SSH链接
项目是软硬件结合,在缺少设备的情况,需要通过接口来模拟实现与设备的交互,其中就需要通过从数据库读取商品的ID信息 出于安全考虑 现在很多数据库都不允许通过直接访问,大多数是通过SSH SSH : 数 ...
- python链接mysql 判断是否成功_【初学python】使用python连接mysql数据查询结果并显示...
因为测试工作经常需要与后台数据库进行数据比较和统计,所以采用python编写连接数据库脚本方便测试,提高工作效率,脚本如下(python连接mysql需要引入第三方库MySQLdb,百度下载安装) # ...
- python链接mysql 判断是否成功_python连接mysql数据库并读取数据的实现
1.安装pymysql包 pip install pymysql 注: MySQLdb只支持python2,pymysql支持python3 2.连接数据 import pymysql import ...
- python链接mysql系统结构设计_第11章:使用Python打造MySQL专家系统
1.Python语言高级特性 1).深入浅出Python生成器 1).生成器函数:与普通函数定义类似,使用yield语句而不是return语句返回结果.yield语句一次返回一个结果,在每个结果中间挂 ...
- Python笔记,Python链接mysql
Linux中的基础配置操作 1.安装好mysql [root@localhost ~]#yum install mariadb -y [root@localhost ~]# yum install m ...
- 用pymysql 建立python链接mysql数据库02
昨天下载完mysql,并且安装好了,看下版本mysql->5.6.24 利用navicat建立了新表,并增加了对应内容,过程比较简答 好了,准备工作完毕,开始测试链接 方法和代码如下,大多数计算 ...
- python链接mysql报错2003_Python连接Mysql报错问题解决
import MySQLdb #打开数据库 db = MySQLdb.connect("127.0.0.1","root","123456" ...
最新文章
- Android13.9.15
- POJ 2231 Moo Volume(递推、前缀和)
- scrollBy与scrollTo的区别与用法
- NumPy之:多维数组中的线性代数
- vue中mixins的理解
- 自动加密可序列化的类
- Android开发学习之基于ViewPager实现Gallery画廊效果
- GNS3中RIP的过滤和修改
- Android 四大组件学习之Service二
- fpga电平约束有什么作用_FPGA开发全攻略——时序约束
- 进程管理API之get_task_mm
- java numberformat_Java NumberFormat 类的详解及实例
- 基于PostgreSQL进行Java应用开发
- 如何通过一根网线连接两台电脑,实现数据的传输?
- 监听通知栏内容,获取通知栏消息,安卓原生SDK扩展
- Windows+iPad扩展屏幕-随航功能
- 2020-8-15词汇
- 椭圆曲线加密(Elliptic Curve Cryptography, ECC)
- SSO(Single Sign On):原理与使用
- 反思,让人难以忍受的人
热门文章
- 深度学习开源库tiny-dnn的使用(MNIST)
- Windows7 64位机上Emgu CV2.4.2安装与配置
- Windows7在Eclipse中配置Python+OpenCV
- CxImage类库的简介
- 【AI】CelebA数据介绍、下载及说明
- 分享一个ssh打通的脚本
- 计算机应用a级考试,四川省职称计算机应用能力考试A级模拟题
- 7000p可以加装固态吗_解惑丨地暖不热加装循环泵可以吗?
- matlab图像处理课程设计,基于MATLAB_GUI的数字图像处理程序设计课程设计
- Java项目:进销存系统(java+Gui)