pymysql实现增删改查的操作指南(python)
作者:客官不爱喝酒 发布时间:2024-01-20 08:04:04
标签:pymysql,增删改查,python
1.安装pymysql:pip install pymysql (在命令行窗口中执行)
2.卸载pymysql:pip uninstall pymysql (在命令行窗口中执行)
数据库的连接
需要注意的是port是不用引号括起来 charset是utf8不是utf-8
# 获取数据库连接对象
connection = pymysql.connect(host='localhost', port=3306, user='root', passwd='2732195202', db='book', charset='utf8')
# 获取一个游标
driver = connection.cursor()
# 执行一条sql
driver.execute("select version()")
# 获取执行sql的返回值
resultData=driver.fetchall()
print(resultData)
# 关闭数据库
connection.close()
创建数据库表
import pymysql
#获取数据库连接对象
connection = pymysql.connect(host='localhost', port=3306, user='root', passwd='2732195202', db='book', charset='utf8')
#获取一个游标
driver=connection.cursor()
# 如果该数据库存在就删除
driver.execute("drop table if exists t_emp ")
# 定义sql语句
sql=""" CREATE TABLE `t_emp` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
`department` varchar(20) DEFAULT NULL COMMENT '部门',
`salary` decimal(10,2) DEFAULT NULL COMMENT '工资',
`age` int(11) DEFAULT NULL COMMENT '年龄',
`sex` varchar(4) DEFAULT NULL COMMENT '性别',
PRIMARY KEY (`id`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
"""
# 执行sql
driver.execute(sql)
# 关闭数据连接
connection.close()
向数据库中添加数据
1.需要注意的是规范sql,该写的字段都写上,不使用默认对应
2.提交事务的对象是数据库连接对象,而不是游标对象
3.pycharm连接mysql数据时,如果连接驱动是高版本,需要加上时区,jdbc:mysql://localhost/book?serverTimezone=GMT%2B8
4.如果主键是自动递增,则不能手动指定值,不能写该字段,让其自增长
# 获取数据库连接对象
connection=pymysql.connect(host='localhost',port=3306,user='root',passwd='2732195202',db='book',charset='utf8')
# 获取一个游标
driver=connection.cursor()
# 定义sql语句
sql=""" insert into t_emp(name,department,salary,age,sex)
values("tom","开发部",8000,25,"男"), ("tom","开发部",8000,25,"男")
"""
# 尝试捕捉错误
try:
# 执行SQL,并返回收影响行数
result=driver.execute(sql)
# 提交事务
connection.commit()
print("sql(insert)->error")
except:
# 如果发生错误 则回滚事务
print("sql(insert)->error")
driver.rollback()
# 关闭数据库连接
connection.close()
修改表中的数据
注意点:在操作数据库之前,需要确认是否获取连接数据库成功,并且选中了数库
2.卸载第三方库:pip uninstall pymysql
#获取数据库连接对象 autocommit=True:设置数据库自动提交
connection=pymysql.connect(host="localhost",port=3306,user='root',passwd='2732195202',db='book',charset='utf8',autocommit=True)
# 获取游标对象
driver=connection.cursor()
# 定义sql
sql="update t_emp set salary=%s,name=%s where id=%s;"
# 如果sql错误就执行回滚操作,成功就提交
try:
# 执行sql,并且返回影响的行数
result=driver.execute(sql,[6000,"admin",19])
connection.commit()
print("sql(update)->success")
except:
print("sql(update)->error")
connection.rollback()
# 关闭数据库连接对象
connection.close()
查询数据
1.项目中的.py文件不能和python库中的文件进行冲突,否则会出现异常
# 获取数据库连接对象
connection=pymysql.connect(host='localhost',port=3306,user='root',passwd='2732195202',db='book',charset='utf8')
# 获取一个游标对象
driver=connection.cursor()
#定义sql
sql="select id, name, department, salary, age, sex from t_emp where id>%s and sex=%s"
# 只能获取一次,获取多次的时候会获取到null 如果是多个参数,需要传递一个元组
try:
driver.execute(sql,(1,"女"))
# 获取所有的查询结果 返回一个元组
resultAll=driver.fetchall()
print("resultAll:", resultAll)
# 获取2条数据
resultTwo=driver.fetchmany(2)
print("resultTwo:", resultTwo)
# 获取一条数据
resultOne=driver.fetchone()
print("resultThree:", resultOne)
print("sql(select)->success")
except:
connection.rollback()
print("sql(select)->error")
# 关闭数据库连接
connection.close()
删除表中的记录
import pymysql
# 获取数据库连接对象
connection = pymysql.connect(host='localhost', port=3306, user='root', passwd='2732195202', db='book', charset='utf8')
# 获取一个游标
driver = connection.cursor()
# 定义sql
sql="delete from t_emp where id=%s"
try:
# 执行一条sql
driver.execute(sql, (21))
# 提交事务
connection.commit()
print("sql(delete)->success")
except Exception as e:
# 回滚事务
connection.rollback()
print("sql(delete)->error")
print(e)
#关闭数据库连接
connection.close()
事务操作
提交事务: connection.commit()
回滚事务: connection.rollback()
总结
来源:https://blog.csdn.net/m0_46188681/article/details/116721048
0
投稿
猜你喜欢
- 一、下载git可以官网下载,傻瓜步骤安装就行下载好之后需要在idea中配置git,在File》settings》version Contro
- HTML5 中 div section article 的区别刚刚开始接触 HTML5 时,对它的标签很不适应,甚至一度有点反感。尤其是对
- 将汉字转为拼音,可以用于批量汉字注音、文字排序、拼音检索文字等常见场景。现在互联网上有许多拼音转换工具,基于Python的开源模块也不少,今
- 前言上一次简单了解了协程的工作原理 前文链接最后提到了几个使用协程时会遇到的问题,其中一个就是主线程不会等待子线程结束,在这里记录两种比较简
- 如下所示:#先下载psutil库:pip install psutilimport psutilimport os,datetime,tim
- MYSQL对大小写敏感见字如面,见标题知内容。你有遇到过因为MYSQL对大小写敏感而被坑的体验吗?之前看过阿里巴巴Java开发手册,在MyS
- 背景np.loadtxt()用于从文本加载数据。文本文件中的每一行必须含有相同的数据。***loadtxt(fname,dtype=<
- 如何制作K线图?也不难,代码和说明见下:<%@ Language=VBScript %><%Respo
- 本文实例讲述了python 协程 gevent原理与用法。分享给大家供大家参考,具体如下:geventgreenlet已经实现了协程,但是这
- 目前,我们要在网页中使用圆角效果,总是通过切图然后嵌套很多div,用背景来实现圆角效果。对于前端开发工程师来说,圆角的确是一个让人又爱又恨的
- 我为 Compose 写了一个波浪效果的进度加载库,API 的设计上符合 Compose 的开发规范,使用非常简便。1. 使用方式在 roo
- 今天我们看看所有的类!由于工作的上的事有点忙!点图!以后讲解这是我编译好了的类的结构图,我们可以用很多软件可以从原板的DLL看到这些内容!当
- 如图输入如下命令python manage.py startapp apitest添加应用到 autotest项目项目下在settings.
- 在观看唐宇迪老师图像处理的课程中,其中有一个答题卡识别的小项目,在此结合自己理解做一个简单的总结。1. 项目分析首先在拿到项目时候,分析项目
- 本文列出了一些asp编程种可能会用到的正则表达式例子,大家可以方便的调用!如果您对asp种的正则表达式不是很了解可以看看这篇文章《ASP中R
- 目录一、进程(Process)二、线程(Thread)三、并发编程解决方案:四、多线程实现 (两种)1、第一种 函数方法2、第二种 类方法包
- 前言虽然标题是全站,但目前只做了等级 top 100 直播间的全天弹幕收集。弹幕收集系统基于之前的B 站直播弹幕姬 Python 版修改而来
- 此篇博客学习的api如标题,分别是:current_url获取当前页面的url;page_source 获取当前页面的源码;ti
- 本文实例讲述了Python中dictionary items()系列函数的用法,对Python程序设计有很好的参考借鉴价值。具体分析如下:先
- 1.首先打开AutoIt Windows Info 工具,鼠标点击Finder Tool(按住左键不松手),鼠标将变成一个小风扇形状的图标,