Python学习(二十五)—— Python连接MySql数据库
转载自http://www.cnblogs.com/liwenzhou/p/8032238.html
一、Python3连接MySQL
PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中则使用mysqldb。
Django中也可以使用PyMySQL连接MySQL数据库。
二、PyMySQL安装
- pip install pymysql
三、连接数据库
1.注意事项
在进行本文以下内容之前需要注意:
- 你有一个MySQL数据库,并且已经启动。
- 你有可以连接该数据库的用户名和密码
- 你有一个有权限操作的database
2.基本使用
- # 导入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()
四、增删改查操作
1.增
- # 导入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()
- # 提交之后,获取刚插入的数据的ID
- last_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()
2.删
- # 导入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()
3.改
- # 导入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()
4.查
查询单条数据
- # 导入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.fetctmany(3)
- # 光标按绝对位置移动1
- cursor.scroll(1, mode="absolute")
- # 光标按照相对位置(当前位置)移动1
- cursor.scroll(1, mode="relative")
Python学习(二十五)—— Python连接MySql数据库的更多相关文章
- Java进阶(二十五)Java连接mysql数据库(底层实现)
Java进阶(二十五)Java连接mysql数据库(底层实现) 前言 很长时间没有系统的使用java做项目了.现在需要使用java完成一个实验,其中涉及到java连接数据库.让自己来写,记忆中已无从搜 ...
- Python学习笔记_02:使用Tkinter连接MySQL数据库实现登陆注册功能
1 环境搭建 1.1 Python安装 1.2 MySQL环境搭建 1.3安装MySQLdb 2 具体实现 2.1 登陆界面 2.2 注册界面 2.3 具体实现部分代码 1 环境搭建 1.1 P ...
- python学习 (二十八) Python的for 循环
1: for 循环可以循环如下类型: my_string = "abcabc" // 字符串类型 for c in my_string: print(c, end=' ') car ...
- python3.4学习笔记(二十五) Python 调用mysql redis实例代码
python3.4学习笔记(二十五) Python 调用mysql redis实例代码 #coding: utf-8 __author__ = 'zdz8207' #python2.7 import ...
- 二十五. Python基础(25)--模块和包
二十五. Python基础(25)--模块和包 ● 知识框架 ● 模块的属性__name__ # my_module.py def fun1(): print("Hello& ...
- 学以致用二十九-----python3连接mysql
在前面安装好mysql后,在一个项目中需要连接mysql,python是3.6版本 python3连接mysql需要安装pymysql模块 可以通过pip安装 查看pip 版本 pip --versi ...
- Python学习二十八周(vue.js)
一.指令 1.一个例子简单实用vue: 下载vue.js(这里实用1.0.21版本) 编写html代码: <!DOCTYPE html> <html lang="en&qu ...
- python 学习笔记十五 django基础
Python的WEB框架有Django.Tornado.Flask 等多种,Django相较与其他WEB框架其优势为:大而全,框架本身集成了ORM.模型绑定.模板引擎.缓存.Session等诸多功能. ...
- 笨办法学Python(二十五)
习题 25: 更多更多的练习 我们将做一些关于函数和变量的练习,以确认你真正掌握了这些知识.这节练习对你来说可以说是一本道:写程序,逐行研究,弄懂它. 不过这节练习还是有些不同,你不需要运行它,取而代 ...
- Java开发学习(二十五)----使用PostMan完成不同类型参数传递
一.请求参数 请求路径设置好后,只要确保页面发送请求地址和后台Controller类中配置的路径一致,就可以接收到前端的请求,接收到请求后,如何接收页面传递的参数? 关于请求参数的传递与接收是和请求方 ...
随机推荐
- pwnable.kr simple login writeup
这道题是pwnable.kr Rookiss部分的simple login,需要我们去覆盖程序的ebp,eip,esp去改变程序的执行流程 主要逻辑是输入一个字符串,base64解码后看是否与题目 ...
- mysql修改字段长度及pymysql.err.DataError: (1406, "Data too long for column 'name' at row 1")错误
文章链接:修改字段:https://blog.csdn.net/xiejunna/article/details/78580682 错误分析:https://blog.csdn.net/qq_4214 ...
- 31)django-序列化
目录 1)序列化 2)为什么不用json序列化 3)django序列化QuerySet,ErrorDict数据 一:序列化 序列化是将对象状态转换为可保持或传输的格式的过程 反序列化是指将存储在存储媒 ...
- swift 学习- 12 -- 方法
// 方法 是与某些特定类型相关的函数. 类, 结构体,枚举 都可以定义实例方法, 实例方法为给类型的实例封装了具体的任务与功能. 类, 结构体, 枚举 也可以定义类型方法, 类型方法与类型本身 ...
- Confluence 6 数据收集隐私策略
为什么 Confluence 收集使用数据? 针对 Confluence 我们很自豪 Confluence 是这个星球上最高效和强大的协作工具,我们也计划继续保持这个特性,尽我们最大的努力提供更新的 ...
- Confluence 6 "Duplicate Key" 相关问题解决
如果你遇到了下面的错误信息,例如: could not insert: [bucket.user.propertyset.BucketPropertySetItem#bucket.user.prope ...
- 在 Confluence 6 中禁用 workbox 应用通知
如果你选择 不提供应用通知(does not provide in-app notifications): Confluence workbox 图标将不会可见同时用户也不能在这个服务器上访问 wor ...
- js之DOM对象三
一.JS中for循环遍历测试 for循环遍历有两种 第一种:是有条件的那种,例如 for(var i = 0;i<ele.length;i++){} 第二种:for (var i in ...
- 最短路径之Bellman-Ford算法
第一行为源点个数,边的个数m 接下来m行为a->b和权值 5 52 3 21 2 -31 5 54 5 23 4 3 Bellman-Ford算法(1): #include<iostrea ...
- Jmeter 谷歌插件工具blazemeter录制脚本
1.下载谷歌浏览器插件工具:blazemeter. 2.在谷歌浏览器中拖放安装扩展工具:blazemeter. 粘贴的图像828x219 13.5 KB 3.测试网站利用这个工具录制jmter脚本. ...