python连接数据库命令_Mysql-python连接操作数据库-程序员宅基地

技术标签: python连接数据库命令  

使用python连接操作数据库

--》下载配置python环境

--》推荐安装PyMySQL 库:PyMySQL 是一个纯Python 实现的MySQL 客户端操作库,支持事务、存储过程、批量执行等

使用命令:pip install pymysql

--》连接数据库脚本

1 #导入模块

2 importpymysql3 #连接数据库

4 conn =pymysql.connect(5 host='localhost',6 port=3306,7 user='root',8 password='123456',9 db='ceshi1',10 charset='utf8'

11 )12 #游标对象:用于执行查询和获取结果

13 cursor =conn.cursor()14

15 sql = 'select * from student'

16 #execute()方法:执行sql语句、将结果从数据库获取到客户端

17 rows =cursor.execute(sql)18 #关闭指针,并释放资源

19 cursor.close()20 #关闭数据库连接,并释放资源

21 conn.close()22

23 if rows >=0:24 print('数据库连接成功')25 else:26 print('数据库连接失败')

--》新增单条数据脚本

1 importpymysql2

3 conn =pymysql.connect(4 host='localhost',5 port=3306,6 user='root',7 password='123456',8 db='ceshi1',9 charset='utf8'

10 )11 cursor=conn.cursor()12 sql = "insert into student(studentNo,name_1,class) values('010','测试人员1','测试1班')"

13 rows =cursor.execute(sql)14 #提交当前事务

15 conn.commit()16 cursor.close()17 #关闭数据库连接

18 conn.close()

--》新增多条数据脚本

1 #新增多条executemany

2 importpymysql3 #连接数据库

4 conn =pymysql.connect(5 host='localhost',6 port=3306,7 user='root',8 password='123456',9 db='ceshi1',10 charset='utf8'

11 )12 cursor=conn.cursor()13 #sql = 'INSERT INTO 表名 VALUES(%s,%s,%s)' 无论什么类型,都使用%s作为占位符

14 #rows=cursor.executemany(sql,param)

15 #param = ((username1, salt1, pwd1), (username2, salt2, pwd2), (username3, salt3, pwd3))

16 sql = 'insert into student(studentNo,name_1,class) values(%s,%s,%s)'

17 param =(('011','多条新增1','新增1班'),('012','多条新增2','新增2班'),('013','多条新增3','新增3班'))18 rows =cursor.executemany(sql,param)19 #提交当前事务

20 conn.commit()21 cursor.close()22 #关闭数据库连接

23 conn.close()

--》使用pymysql.cursors.DictCursor类批量添加数据

1 importpymysql2 #连接数据库

3 conn =pymysql.connect(4 host='localhost',5 port=3306,6 user='root',7 password='123456',8 db='ceshi1',9 charset='utf8'

10 )11 #pymysql获取数据时提供了fetchone()和fetchall()函数来获取结果集,这俩种函数在处理大数据量时会消耗大量内存

12 #pymysql.cursors.DictCursor类,SSCursor游标类用来解决数据量大的问题

13 cursor=conn.cursor(pymysql.cursors.DictCursor)14 param =[]15

16 for i in range(1,100):17 param.append([i,'批量1','批量'])18

19 try:20 sql = "insert into student(studentNo,name_1,class) values(%s,%s,%s)"

21 #批量操作

22 cursor.executemany(sql,param)23 conn.commit()24 exceptException as e:25 print(e)26 conn.rollback()

--》修改单条数据脚本

1 #导入模块

2 importpymysql3 #连接数据库

4 conn =pymysql.connect(5 host='localhost',6 port=3306,7 user='root',8 password='123456',9 db='ceshi1',10 charset='utf8'

11 )12 #游标对象:用于执行查询和获取结果

13 cursor =conn.cursor()14

15 sql = 'update student set class = %s where studentNo = %s'

16 #execute()方法:执行sql语句、将结果从数据库获取到客户端

17 rows = cursor.execute(sql,('修改数据','10'))18 conn.commit()19 #关闭指针,并释放资源

20 cursor.close()21 #关闭数据库连接,并释放资源

22 conn.close()

--》修改多条数据脚本

1 #导入模块

2 importpymysql3 #连接数据库

4 conn =pymysql.connect(5 host='localhost',6 port=3306,7 user='root',8 password='123456',9 db='ceshi1',10 charset='utf8'

11 )12 #游标对象:用于执行查询和获取结果

13 cursor =conn.cursor()14

15 sql = 'update student set class = %s where studentNo = %s'

16 rows = cursor.executemany(sql,[('多条数据1','10'),('多条数据2','11')])17 conn.commit()18 #关闭指针,并释放资源

19 cursor.close()20 #关闭数据库连接,并释放资源

21 conn.close()

--》删除数据脚本,与新增脚本大致相同,只需要修改sql语句即可

1 #删除单条sql

2 sql='delete from student where class= %s'

3 rows=cursor.execute(sql,('10',))

1 #删除多条sql

2 sql='delete from student where calss= %s'

3 rows=cursor.executemany(sql,[('11'),('12')])

--》查询数据脚本,与新增脚本大致相同,只需要修改sql语句即可

使用fetchone()、fetchall()、fetchmany函数,查询数据存在内存中

1 #游标对象:用于执行查询和获取结果

2 cursor =conn.cursor(pymysql.cursors.DictCursor)3

4 sql = 'select * from student'

5 rows =cursor.execute(sql)6 #fetchone()

7 print(cursor.fetchone())8 print(cursor.fetchone())9 print(cursor.fetchone())10 #fetchall()

11 #print(cursor.fetchall())  # print(cursor.fetchmany(2))

12 conn.commit()13 #关闭指针,并释放资源

14 cursor.close()15 #关闭数据库连接,并释放资源

16 conn.close()

fetchone()运行结果

1772504-20200402114735725-27637874.png

fetchall()运行结果

1772504-20200402114859129-408931999.png

fetchmany()运行结果

1772504-20200402115607876-1300347181.png

--》cursor游标移动脚本

1 #第一个值为移动的行数,整数为向下移动,负数为向上移动,mode指定了是相对当前位置移动,还是相对于首行移动

2 cursor.scroll(1,mode='relative') #相对当前位置移动

3 cursor.scroll(2,mode='absolute') #相对绝对位置移动

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_39901518/article/details/110069019

智能推荐

正则表达式 匹配常用手机号 (13、15\17\18开头的十一位手机号)-程序员宅基地

文章浏览阅读1.8k次。正则表达式 匹配常用手机号 (13、15\17\18开头的十一位手机号) 原文:正则表达式 匹配常用手机号 (13、15\17\18开头的十一位手机号) ^1[3578]\d{9}$^1表示以1开头,[3578]表示第二位的数字为3578中的任意一个,\d{9..._手机号13,15,18开头11位数字正则表达式怎么书写

华为OD机试(Java)真题目录汇总(2022&2023)_华为od 任务混部 java-程序员宅基地

文章浏览阅读5.7k次,点赞13次,收藏32次。华为OD机试(Javascript)真题目录汇总。华为OD机试(Python)真题目录汇总。华为OD机试(C++)真题目录汇总。_华为od 任务混部 java

神经网络初探-程序员宅基地

文章浏览阅读117次。神经网络初探——读《深度学习的数学》总结​ 学习是一个系统通过某种过程或者方式提升自身的某个或某些性能的过程,它本身包含的是一种自动化和可控化的含义。那么如何能让不具备智能的机器去学习呢?在模拟大脑神经元的工作原理后,看来我们已经找到了通往机器学习的一种方法,它叫做神经网络。神经网络是一种看似不可理解的复杂学习方法,这里包含着许多数学的知识。在阅读《深度学习的数学》一书之后,我想,我对神经网..._神经网络初探

音频分离Spleeter的安装_2stems.tar.gz-程序员宅基地

文章浏览阅读3.5k次,点赞5次,收藏13次。音频分离Spleeter的安装1.环境依赖及建立(需要已安装anaconda)1.0 项目源地址(github地址)1.1 创建虚拟环境1.2 激活虚拟环境1.3 conda 安装spleeter1.4 下载一个示例音乐1.5 将该音乐分离为两部分1.5.1 报错:No module named numba.decorators1.5.2 解决方案:1.6 下载分类模型1.6.1报错ValueError:Can't load save_path when it is None.1.6.2 解决方案:1.6._2stems.tar.gz

让你的软件飞起来:RGB转为YUV-程序员宅基地

文章浏览阅读64次。朋友曾经给我推荐了一个有关代码优化的pdf文档《让你的软件飞起来》,看完之后,感受颇深。为了推广其,同时也为了自己加深印象,故将其总结为word文档。下面就是其的详细内容总结,希望能于己于人都有所帮助。速度取决于算法同样的事情,方法不一样,效果也不一样。比如,汽车引擎,可以让你的速度超越马车,却无法超越音速;涡轮引擎,可以轻松超越音障,却无法飞出地球;如果有火箭发动机,就可以到达火..._bao.yuv

PX4装机教程(五)无人船(车)_在px4固体中如何设置差速船-程序员宅基地

文章浏览阅读2.5k次,点赞3次,收藏33次。文章目录前言一、载具设置二、电机接线三、PWM输出设置四、航点设置前言一个人可以走的更快,一群人才能走的更远,交流学习加qq:2096723956更多保姆级PX4+ROS学习视频:https://b23.tv/ZeUDKqy分享知识,传递正能量,如有疏漏或不当之处,恳请指出.PX4固件版本:1.10.0硬件:淘宝竞速船或者打窝船实验录屏https://www.bilibili.com/video/BV1wA411c7p3?spm_id_from=333.999.0.0一、载具设置单电机_在px4固体中如何设置差速船

随便推点

【玩转华为云】手把手教你用Modelarts基于YOLO V3算法实现物体检测-程序员宅基地

文章浏览阅读2k次。本篇推文共计2000个字,阅读时间约3分钟。华为云—华为公司倾力打造的云战略品牌,2011年成立,致力于为全球客户提供领先的公有云服务,包含弹性云服务器、云数据库、云安全等云计算服务,软..._modelarts yolo weights 文件 bbs 华为云

WiFi介绍_wifi dfs-程序员宅基地

文章浏览阅读2.2k次,点赞3次,收藏13次。802.11 Wi-Fi_wifi dfs

RK3568-sata接口_rk3568 sata-程序员宅基地

文章浏览阅读249次。pcie接口sata接口pcie总线pcie总线pcie控制器sata控制器nvme设备sata设备nvme协议ahci协议m-key接口b-key接口_rk3568 sata

java实现循环队列,解决普通队列假溢出问题_但是要利用循环队列的时候,处理假溢出,要使q.front=0的时候,为什么q.rear要加-程序员宅基地

文章浏览阅读1.3k次。循环队列可以很好的解决假溢出问题,不同于普通队列,在循环队列中,需将rear与front初始值都设置为0,rear指针指向队列中最后一个元素的下一个位置,也正因如此,数组是否存满的判定条件也应做出改变,在普通队列中,front==maxSize-1,即可认为数组已满,但是在循环队列中,由于在存放完数组最后一个有效位置后可以继续像数组中的0号位置进行存储,所以判断满的条件也会发生改变,—(rear+1)%maxSize = front.可以举个例子方便理解,假设一maxSize=5的数组,那么其有0 1_但是要利用循环队列的时候,处理假溢出,要使q.front=0的时候,为什么q.rear要加

linux CentOS 7下载步骤_centos7下载-程序员宅基地

文章浏览阅读4.8k次。linux CentOS 7下载步骤_centos7下载

Qt 22 布局管理器1 - QLayout,QBoxLayout,布局管理器的相互嵌套_qt layout可以嵌套layout吗-程序员宅基地

文章浏览阅读464次。布局管理器提供相关的类对界面组件进行布局管理能够自动排布窗口中的界面组件窗口变化后自动更新界面组件的大小QLayoutQLayout 是Qt 中布局管理器的抽象基类通过继承QLayout实现了功能各异且互补的布局管理器Qt中可以根据需要自定义布局管理器布局管理器不是界面部件,而是界面部件的定位策略QBoxLayout 布局管理器以水平或者垂直的方式管理界面组件水平:QHBoxLayout 水平布局管理器垂直:QVBoxLayout 垂直布局管理器sizePolicy:QSize_qt layout可以嵌套layout吗

推荐文章

热门文章

相关标签