PyMySQL介绍
pymysql介绍
PyMySQL介绍
PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中则使用mysqldb
Django中也可以使用PyMySQL连接MySQL数据库
PyMySQL安装
- pip install pymysql
连接数据库
注意事项
在进行本文以下内容之前需要注意:
你有一个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()

防止SQL注入

- import pymysql
- name = input("用户名:>>")
- pwd = input("密码:>>")
- # 连接数据库
- conn = pymysql.connect(host="localhost", database="s8", user="root", password="123456", charset="utf8")
- # 获取光标,输入SQL语句并执行
- cursor = conn.cursor()
- sql = "select * from userinfo;"
- # 自己拼接字符串,容易造成SQL注入问题
- sql2 = "select * from userinfo where name='%s' and pwd='%s';"%(name,pwd)
- # 让pymysql来拼接,防止SQL注入
- sql3 = "select * from userinfo where name=%s and pwd=%s;"
- ret3 = cursor.execute(sql3,[name,pwd])
- ret = cursor.execute(sql)
- # 关闭光标和连接
- cursor.close()
- conn.close()
- print(ret) # 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()

批量执行

- import pymysql
- # 连接
- conn = pymysql.connect(host="localhost", user="root", password="123456", database="s8", charset="utf8")
- # 获取光标
- cursor = conn.cursor()
- # 写SQL语句
- sql = "insert into userinfo(name,pwd) values(%s,%s);"
- user1 = "Egon"
- pwd1 = "1234"
- user2 = "Alex"
- pwd2 = "1234"
- # data = [("Egon","1234"),("Alex","1234")]
- try:
- # 执行
- cursor.executemany(sql, ((user1, pwd1),(user2, pwd2)))
- # cursor.executemany(sql, data)
- # 把修改提交到数据库
- conn.commit()
- except Exception as e:
- conn.rollback() # 执行SQL语句有问题或提交有异常都回滚
- 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)

进阶

- import pymysql
- # 连接
- conn = pymysql.connect(host="localhost", user="root", password="123456", database="s8", charset="utf8")
- # 获取光标
- cursor = conn.cursor()
- # 写SQL语句
- sql = "select * from userinfo;"
- ret = cursor.execute(sql)
- print("-->",ret) # 受影响的行数
- # 一次取一条
- # print(cursor.fetchone()) # (1, 'root', '123456')
- # print(cursor.fetchone()) # (4, 'Egon2', '1234')
- # 一次取所有
- # print(cursor.fetchall()) # ((1, 'root', '123456'), (4, 'Egon2', '1234'))
- # 一次取2条
- # print(cursor.fetchmany(2))
- # 进阶用法
- print(cursor.fetchone()) # 取1条
- print(cursor.fetchall()) # 接着上一条取所有
- print(cursor.fetchall()) # 取不到了,为()
- # 移动取数据的光标
- cursor.scroll(-2) # 往上移两个,默认是相对移动
- cursor.scroll(0, mode="absolute") # 按照绝对位置移动,移动到开始位置
- cursor.close()
- conn.close()
PyMySQL介绍的更多相关文章
- python之pymysql模块学习(待完善...)
pymysql介绍 pymysql是在python3.x版本中用于连接mysql服务器的一个库.python2中则使用mysqldb. 安装方法: pip install pymysql 使用实例: ...
- PyMySQL模块的使用
PyMySQL介绍 PyMySQL是在Python3.x版本中用于连接MySQL服务器的一个库,Python2系列中则使用mysqldb.Django中也可以使用PyMySQL连接MySQL数据库. ...
- Python连接MySQL数据库之pymysql模块使用
安装PyMySQL pip install pymysql PyMySQL介绍 PyMySQL是在python3.x版本中用于连接MySQL服务器的一个库,2中则使用mysqldb. Django中也 ...
- day 61 pymysql
Python3连接MySQL 本文介绍Python3连接MySQL的第三方库--PyMySQL的基本使用. PyMySQL介绍 PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服 ...
- python连接数据库(pymysql)及数据库加密
内容: 1.pymysql介绍 2.pymysql基本使用 3.数据库加密 参考:http://www.cnblogs.com/wupeiqi/articles/5713330.html 1.pymy ...
- day 59 pymysql
PyMySQL介绍 PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中则使用mysqldb. PYmysql安装 pip install pymys ...
- MySQL:PyMySQL&ORM
一.PyMySQL介绍 PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中则使用mysqldb. Django中也可以使用PyMySQL连接MySQ ...
- Navicat工具、pymysql模块、数据备份
IDE工具介绍(Navicat) 生产环境还是推荐使用mysql命令行,但为了方便我们测试,可以使用IDE工具,我们使用Navicat工具,这个工具本质上就是一个socket客户端,可视化的连接mys ...
- pymysql模块使用---Python连接MySQL数据库
pymysql模块使用---Python连接MySQL数据库 浏览目录 pymysql介绍 连接数据库 execute( ) 之 sql 注入 增删改查操作 进阶用法 一.pymysql介绍 1.介绍 ...
随机推荐
- 理解Callable 和 Spring DeferredResult(翻译)
1-介绍 Servlet 3中的异步支持为在另一个线程中处理HTTP请求提供了可能性.当有一个长时间运行的任务时,这是特别有趣的,因为当另一个线程处理这个请求时,容器线程被释放,并且可以继续为其他请求 ...
- Crosses Puzzles zoj 4018 (zju校赛)
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5746 题目大意: N*M的方格里,每个格子有一个指针,一开始指向上下左右四个方 ...
- 【BZOJ】3404: [Usaco2009 Open]Cow Digit Game又见数字游戏(博弈论)
http://www.lydsy.com/JudgeOnline/problem.php?id=3404 写挫好几次.... 裸的博弈论即可.. #include <cstdio> #in ...
- java读取配置文件(转)
转载:http://blog.csdn.net/gaogaoshan/article/details/8605887 java 4种方式读取配置文件 + 修改配置文件 方式一:采用Servle ...
- c#——表达式树在LINQ动态查询
一般如果逻辑比较简单,只是存在有的情况多一个查询条件,有的情况不需要添加该查询条件 简单方式这样操作就可以了 public IQueryable<FileImport> DynamicCh ...
- java编译、编码、语言设置
下面这两行加入,环境变量:特别是gradle在编译文件中含有中文时会遇到一些问题: JAVA_TOOL_OPTIONS -Dfile.encoding=UTF-8 -Duser.language=en ...
- 【BZOJ3439】Kpm的MC密码 Trie树+可持久化线段树
[BZOJ3439]Kpm的MC密码 Description 背景 想Kpm当年为了防止别人随便进入他的MC,给他的PC设了各种奇怪的密码和验证问题(不要问我他是怎么设的...),于是乎,他现在理所当 ...
- iOS 7.1 UITapGestureRecognizer 不好用的解决办法
UITapGestureRecognizer *tap3 = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(o ...
- excel导出工具类
package com.jianwu.util.excel; import com.google.common.collect.Lists;import com.jianwu.exception.Mo ...
- bootstrap3.3.6 CDN
<!-- Latest compiled and minified CSS --> <link rel="stylesheet" href="//max ...