pymysql介绍

PyMySQL介绍

PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中则使用mysqldb

Django中也可以使用PyMySQL连接MySQL数据库

PyMySQL安装

  1. pip install pymysql

连接数据库

注意事项

在进行本文以下内容之前需要注意:

你有一个MySQL数据库,并且已经启动。

你有可以连接该数据库的用户名和密码

你有一个有权限操作的database

基本使用

  1. # 导入pymysql模块
  2. import pymysql
  3. # 连接database
  4. conn = pymysql.connect(host=“你的数据库地址”, user=“用户名”,password=“密码”,database=“数据库名”,charset=“utf8”)
  5. # 得到一个可以执行SQL语句的光标对象
  6. cursor = conn.cursor()
  7. # 定义要执行的SQL语句
  8. sql = """
  9. CREATE TABLE USER1 (
  10. id INT auto_increment PRIMARY KEY ,
  11. name CHAR(10) NOT NULL UNIQUE,
  12. age TINYINT NOT NULL
  13. )ENGINE=innodb DEFAULT CHARSET=utf8;
  14. """
  15. # 执行SQL语句
  16. cursor.execute(sql)
  17. # 关闭光标对象
  18. cursor.close()
  19. # 关闭数据库连接
  20. conn.close()

防止SQL注入

  1. import pymysql
  2. name = input("用户名:>>")
  3. pwd = input("密码:>>")
  4. # 连接数据库
  5. conn = pymysql.connect(host="localhost", database="s8", user="root", password="123456", charset="utf8")
  6. # 获取光标,输入SQL语句并执行
  7. cursor = conn.cursor()
  8. sql = "select * from userinfo;"
  9. # 自己拼接字符串,容易造成SQL注入问题
  10. sql2 = "select * from userinfo where name='%s' and pwd='%s';"%(name,pwd)
  11. # 让pymysql来拼接,防止SQL注入
  12. sql3 = "select * from userinfo where name=%s and pwd=%s;"
  13. ret3 = cursor.execute(sql3,[name,pwd])
  14.  
  15. ret = cursor.execute(sql)
  16. # 关闭光标和连接
  17. cursor.close()
  18. conn.close()
  19. print(ret) # 1 一条结果

增删改查操作

  1. # 导入pymysql模块
  2. import pymysql
  3. # 连接database
  4. conn = pymysql.connect(host=“你的数据库地址”, user=“用户名”,password=“密码”,database=“数据库名”,charset=“utf8”)
  5. # 得到一个可以执行SQL语句的光标对象
  6. cursor = conn.cursor()
  7. sql = "INSERT INTO USER1(name, age) VALUES (%s, %s);"
  8. username = "Alex"
  9. age = 18
  10. # 执行SQL语句
  11. cursor.execute(sql, [username, age])
  12. # 提交事务
  13. conn.commit()
  14. cursor.close()
  15. conn.close()

插入数据失败回滚

  1. # 导入pymysql模块
  2. import pymysql
  3. # 连接database
  4. conn = pymysql.connect(host=“你的数据库地址”, user=“用户名”,password=“密码”,database=“数据库名”,charset=“utf8”)
  5. # 得到一个可以执行SQL语句的光标对象
  6. cursor = conn.cursor()
  7. sql = "INSERT INTO USER1(name, age) VALUES (%s, %s);"
  8. username = "Alex"
  9. age = 18
  10. try:
  11. # 执行SQL语句
  12. cursor.execute(sql, [username, age])
  13. # 提交事务
  14. conn.commit()
  15. except Exception as e:
  16. # 有异常,回滚事务
  17. conn.rollback()
  18. cursor.close()
  19. conn.close()

获取插入数据的ID(关联操作时会用到)

  1. # 导入pymysql模块
  2. import pymysql
  3. # 连接database
  4. conn = pymysql.connect(host=“你的数据库地址”, user=“用户名”,password=“密码”,database=“数据库名”,charset=“utf8”)
  5. # 得到一个可以执行SQL语句的光标对象
  6. cursor = conn.cursor()
  7. sql = "INSERT INTO USER1(name, age) VALUES (%s, %s);"
  8. username = "Alex"
  9. age = 18
  10. try:
  11. # 执行SQL语句
  12. cursor.execute(sql, [username, age])
  13. # 提交事务
  14. conn.commit()
  15. # 提交之后,获取刚插入的数据的ID
  16. last_id = cursor.lastrowid
  17. except Exception as e:
  18. # 有异常,回滚事务
  19. conn.rollback()
  20. cursor.close()
  21. conn.close()

批量执行

  1. import pymysql
  2.  
  3. # 连接
  4. conn = pymysql.connect(host="localhost", user="root", password="123456", database="s8", charset="utf8")
  5. # 获取光标
  6. cursor = conn.cursor()
  7. # 写SQL语句
  8. sql = "insert into userinfo(name,pwd) values(%s,%s);"
  9. user1 = "Egon"
  10. pwd1 = "1234"
  11. user2 = "Alex"
  12. pwd2 = "1234"
  13. # data = [("Egon","1234"),("Alex","1234")]
  14. try:
  15. # 执行
  16. cursor.executemany(sql, ((user1, pwd1),(user2, pwd2)))
  17. # cursor.executemany(sql, data)
  18. # 把修改提交到数据库
  19. conn.commit()
  20. except Exception as e:
  21. conn.rollback() # 执行SQL语句有问题或提交有异常都回滚
  22.  
  23. cursor.close()
  24. conn.close()

  1. # 导入pymysql模块
  2. import pymysql
  3. # 连接database
  4. conn = pymysql.connect(host=“你的数据库地址”, user=“用户名”,password=“密码”,database=“数据库名”,charset=“utf8”)
  5. # 得到一个可以执行SQL语句的光标对象
  6. cursor = conn.cursor()
  7. sql = "DELETE FROM USER1 WHERE id=%s;"
  8. try:
  9. cursor.execute(sql, [4])
  10. # 提交事务
  11. conn.commit()
  12. except Exception as e:
  13. # 有异常,回滚事务
  14. conn.rollback()
  15. cursor.close()
  16. conn.close()

  1. # 导入pymysql模块
  2. import pymysql
  3. # 连接database
  4. conn = pymysql.connect(host=“你的数据库地址”, user=“用户名”,password=“密码”,database=“数据库名”,charset=“utf8”)
  5. # 得到一个可以执行SQL语句的光标对象
  6. cursor = conn.cursor()
  7. # 修改数据的SQL语句
  8. sql = "UPDATE USER1 SET age=%s WHERE name=%s;"
  9. username = "Alex"
  10. age = 80
  11. try:
  12. # 执行SQL语句
  13. cursor.execute(sql, [age, username])
  14. # 提交事务
  15. conn.commit()
  16. except Exception as e:
  17. # 有异常,回滚事务
  18. conn.rollback()
  19. cursor.close()
  20. conn.close()

查询单条数据

  1. # 导入pymysql模块
  2. import pymysql
  3. # 连接database
  4. conn = pymysql.connect(host=“你的数据库地址”, user=“用户名”,password=“密码”,database=“数据库名”,charset=“utf8”)
  5. # 得到一个可以执行SQL语句的光标对象
  6. cursor = conn.cursor()
  7. # 查询数据的SQL语句
  8. sql = "SELECT id,name,age from USER1 WHERE id=1;"
  9. # 执行SQL语句
  10. cursor.execute(sql)
  11. # 获取单条查询数据
  12. ret = cursor.fetchone()
  13. cursor.close()
  14. conn.close()
  15. # 打印下查询结果
  16. print(ret)

查询多条数据

  1. # 导入pymysql模块
  2. import pymysql
  3. # 连接database
  4. conn = pymysql.connect(host=“你的数据库地址”, user=“用户名”,password=“密码”,database=“数据库名”,charset=“utf8”)
  5. # 得到一个可以执行SQL语句的光标对象
  6. cursor = conn.cursor()
  7. # 查询数据的SQL语句
  8. sql = "SELECT id,name,age from USER1;"
  9. # 执行SQL语句
  10. cursor.execute(sql)
  11. # 获取多条查询数据
  12. ret = cursor.fetchall()
  13. cursor.close()
  14. conn.close()
  15. # 打印下查询结果
  16. print(ret)

进阶

  1. import pymysql
  2.  
  3. # 连接
  4. conn = pymysql.connect(host="localhost", user="root", password="123456", database="s8", charset="utf8")
  5. # 获取光标
  6. cursor = conn.cursor()
  7. # 写SQL语句
  8. sql = "select * from userinfo;"
  9. ret = cursor.execute(sql)
  10. print("-->",ret) # 受影响的行数
  11. # 一次取一条
  12. # print(cursor.fetchone()) # (1, 'root', '123456')
  13. # print(cursor.fetchone()) # (4, 'Egon2', '1234')
  14. # 一次取所有
  15. # print(cursor.fetchall()) # ((1, 'root', '123456'), (4, 'Egon2', '1234'))
  16. # 一次取2条
  17. # print(cursor.fetchmany(2))
  18.  
  19. # 进阶用法
  20. print(cursor.fetchone()) # 取1条
  21. print(cursor.fetchall()) # 接着上一条取所有
  22. print(cursor.fetchall()) # 取不到了,为()
  23. # 移动取数据的光标
  24. cursor.scroll(-2) # 往上移两个,默认是相对移动
  25. cursor.scroll(0, mode="absolute") # 按照绝对位置移动,移动到开始位置
  26.  
  27. cursor.close()
  28. conn.close()

PyMySQL介绍的更多相关文章

  1. python之pymysql模块学习(待完善...)

    pymysql介绍 pymysql是在python3.x版本中用于连接mysql服务器的一个库.python2中则使用mysqldb. 安装方法: pip install pymysql 使用实例: ...

  2. PyMySQL模块的使用

    PyMySQL介绍 PyMySQL是在Python3.x版本中用于连接MySQL服务器的一个库,Python2系列中则使用mysqldb.Django中也可以使用PyMySQL连接MySQL数据库. ...

  3. Python连接MySQL数据库之pymysql模块使用

    安装PyMySQL pip install pymysql PyMySQL介绍 PyMySQL是在python3.x版本中用于连接MySQL服务器的一个库,2中则使用mysqldb. Django中也 ...

  4. day 61 pymysql

    Python3连接MySQL 本文介绍Python3连接MySQL的第三方库--PyMySQL的基本使用. PyMySQL介绍 PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服 ...

  5. python连接数据库(pymysql)及数据库加密

    内容: 1.pymysql介绍 2.pymysql基本使用 3.数据库加密 参考:http://www.cnblogs.com/wupeiqi/articles/5713330.html 1.pymy ...

  6. day 59 pymysql

    PyMySQL介绍 PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中则使用mysqldb. PYmysql安装 pip install pymys ...

  7. MySQL:PyMySQL&ORM

    一.PyMySQL介绍 PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中则使用mysqldb. Django中也可以使用PyMySQL连接MySQ ...

  8. Navicat工具、pymysql模块、数据备份

    IDE工具介绍(Navicat) 生产环境还是推荐使用mysql命令行,但为了方便我们测试,可以使用IDE工具,我们使用Navicat工具,这个工具本质上就是一个socket客户端,可视化的连接mys ...

  9. pymysql模块使用---Python连接MySQL数据库

    pymysql模块使用---Python连接MySQL数据库 浏览目录 pymysql介绍 连接数据库 execute( ) 之 sql 注入 增删改查操作 进阶用法 一.pymysql介绍 1.介绍 ...

随机推荐

  1. 理解Callable 和 Spring DeferredResult(翻译)

    1-介绍 Servlet 3中的异步支持为在另一个线程中处理HTTP请求提供了可能性.当有一个长时间运行的任务时,这是特别有趣的,因为当另一个线程处理这个请求时,容器线程被释放,并且可以继续为其他请求 ...

  2. Crosses Puzzles zoj 4018 (zju校赛)

    http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5746 题目大意: N*M的方格里,每个格子有一个指针,一开始指向上下左右四个方 ...

  3. 【BZOJ】3404: [Usaco2009 Open]Cow Digit Game又见数字游戏(博弈论)

    http://www.lydsy.com/JudgeOnline/problem.php?id=3404 写挫好几次.... 裸的博弈论即可.. #include <cstdio> #in ...

  4. java读取配置文件(转)

    转载:http://blog.csdn.net/gaogaoshan/article/details/8605887 java 4种方式读取配置文件 + 修改配置文件     方式一:采用Servle ...

  5. c#——表达式树在LINQ动态查询

    一般如果逻辑比较简单,只是存在有的情况多一个查询条件,有的情况不需要添加该查询条件 简单方式这样操作就可以了 public IQueryable<FileImport> DynamicCh ...

  6. java编译、编码、语言设置

    下面这两行加入,环境变量:特别是gradle在编译文件中含有中文时会遇到一些问题: JAVA_TOOL_OPTIONS -Dfile.encoding=UTF-8 -Duser.language=en ...

  7. 【BZOJ3439】Kpm的MC密码 Trie树+可持久化线段树

    [BZOJ3439]Kpm的MC密码 Description 背景 想Kpm当年为了防止别人随便进入他的MC,给他的PC设了各种奇怪的密码和验证问题(不要问我他是怎么设的...),于是乎,他现在理所当 ...

  8. iOS 7.1 UITapGestureRecognizer 不好用的解决办法

    UITapGestureRecognizer *tap3 = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(o ...

  9. excel导出工具类

    package com.jianwu.util.excel; import com.google.common.collect.Lists;import com.jianwu.exception.Mo ...

  10. bootstrap3.3.6 CDN

    <!-- Latest compiled and minified CSS --> <link rel="stylesheet" href="//max ...