Python操作Mysql之基本操作
正文
pymysql
python操作mysql依赖pymysql这个模块
下载安装
01 | pip3 install pymysql |
操作mysql
python操作mysql的时候,是通过”游标”来进行操作的。
1、创建链接
01 | conn = pymysql.connect(host = '127.0.0.1' , port = 3306 , user = 'root' , passwd = '123' , db = 't1' ) |
分析:
host:表示链接的域名 port:链接的额端口 user:链接的数据库用户 passwd:数据库密码 db:要链接的表
2、创建游标
01 | cursor = conn.cursor() |
3、执行SQL,并返回影响的行数
01 | effect_row = cursor.execute( "mysql语句" ) |
说明:
1、括号中接收的是纯mysql语句。
2、返回的你执行的sql语句在数据库中影响的行数
例子:
01 | effect_row = cursor.execute( "update hosts set host = '1.1.1.2'" ) |
使用占位符:
1 effect_row = cursor.execute("insert into tb1(nid,name,...) values(%s,%s,...)",(1,'haha',...))使用占位符,同时支持多条数据增加:
- execute改为executemany
- 后面格式化数据的时候,使用列表的方式,里面每次的操作用元组的方式包裹,每项数据间用逗号”,”;隔开。
1 effect_row = cursor.executemany("insert into tb1(nid,name)values(%s,%s)", [(1,'haha'),(2,'xxx')])
4、提交数据
01 | conn.commit() |
注意:
数据必须提交,不然无法被保存。
5、关闭游标
01 | cursor.close() |
6、关闭链接
01 | conn.close() |
操作mysql补充
当数据库表打开了自动递增,我们增加的数据可以不用填写编号,数据库为我们每次添加的数据添加一个id;二这个id我们在增加数据操作的时候,是可以获取的。
代码:
01 | new_id = cursor.lastrowid |
说明:
获取的代码要写在commit()后面,在关闭操作的前面。
问题:上面的操作是一条,获取的是对应的id,但是当增加的数据多条的时候,获取的结果?
当有多条数据的时候,获取的id是最后一条数据的。
获取mysql数据
因为是获取数据,并不对数据进行改动,所以此时可以不用执行,commit()
1、获取单条数据
01 | row_1 = cursor.fetchone() |
2、获取所有的数据
01 | row_3 = cursor.fetchall() |
3、获取前n行数据
01 | row_2 = cursor.fetchmany( 3 ) |
说明:
1、python获取数据的时候,也是通过游标来进行数据定位的。
2、这里的单条数据获取,和我们迭代器中的next很像。
特殊:
我们操作单数数据,操作一条数据,游标就会往后移一位,执行多条fetchone()的话,获取数据库的数据,是依次往下获取的。
执行取前n行数据的时候,比如:fetchmany(3)就相当于执行了3条fetchone()
注:在fetch数据时按照顺序进行,可以使用cursor.scroll(num,mode)来移动游标位置
- cursor.scroll(1,mode='relative') # 相对当前位置移动
- cursor.scroll(1,mode=’absolute’) # 相对绝对位置移动
4、fetch的数据类型
关于默认获取的数据是元祖类型,如果想要或者字典类型的数据,即
01 02 03 04 05 06 07 08 09 10 11 12 13 14 | #!/usr/bin/env python # -*- coding:utf-8 -*- import pymysql conn = pymysql.connect(host = '127.0.0.1' , port = 3306 , user = 'root' , passwd = '123' , db = 't1' ) # 游标设置为字典类型,注意括号中的代码。 cursor = conn.cursor(cursor = pymysql.cursors.DictCursor) r = cursor.execute( "call p1()" ) result = cursor.fetchone() cursor.close() conn.close() |
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步