安装PyMySQL

  pip install pymysql

PyMySQL介绍

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

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

连接数据库

  你有一个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()

返回字典格式数据      --  cursor = conn.cursor(cursor=pymysql.cursor.DictCursor)

默认是以元组形式返回

另外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()

插入数据失败回滚

在执行增删改操作时,不想提交前面的操作,可以使用 rollback()回滚取消操作。

# 导入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()

# 导入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.scorll(1,mode='absolute)
# 光标按照相对位置(当前位置)移动1
cursor.scroll(1,mode='relative')

最新文章

  1. CSS currentColor 变量的使用
  2. iPhone / iPad UI界面设计与图标设计的尺寸设计规范+安卓+网页
  3. Thymeleaf+Spring整合
  4. Spring和mybatis整合后的mybais-config.xml配置
  5. oracle中查询某张表都被哪些表参照了
  6. Scrum 3.2 多鱼点餐系统开发进度(页面优化&下单详细信息页面)
  7. jQuery form插件的使用--使用 fieldValue 方法校验表单
  8. Android 6.0 SDK 找不到HttpClient的解决方法
  9. JavaWeb学习记录(二十六)——在线人数统计HttpSessionListener监听实现
  10. 一篇关于学C++的感想(拿来与大家分享)
  11. idea 配置node Run
  12. Windows Azure 网站的 IP 和域限制
  13. ezjailserver备份和恢复方法
  14. .net微软消息队列(msmq)简单案例
  15. 30分钟学会使用Spring Web Services基础开发
  16. 如何验证代理ip的正确性
  17. 1.docker 数据卷的备份和恢复(非大数据量)
  18. [No0000176]Git常用命令速查表(收藏大全)
  19. Spring和Mybatis整合过程中遇到的一个找不到sqlSessionFactory或sqlSessionTemplate的异常
  20. liunx的文件系统及相关的基本命令

热门文章

  1. identifier of an instance of **** was altered from **** to *****
  2. swiper 逆向轮播
  3. MySQL日志专题
  4. css3基本属性
  5. vue-cli项目 build后请求本地static文件中的 json数据,路径不对,报错404处理方法
  6. postgre的函数创建
  7. php 通过curl header传值
  8. 解决Windows服务无法访问网络映射盘的问题
  9. webpack4与babel配合使es6代码可运行于低版本浏览器
  10. BP神经网络综合评价法