python通过什么方式操作数据库?
- python解决一切问题几乎都是通过库的方式,包括内置库和第三方库。
- 目前绝大部分中小企业使用的都是mysql数据库,因为开源免费,屌丝企业,能省则省。
- python中通过pymsql库提供对mysql数据库操作的支持
环境安装
- pip install pymysql
主要操作
- 建立数据库连接:db=pymsql.connect(host="localhost",port=3306,user="usernmae",password='pwd',database=" ",charset="utf8")
- 创建游标:cu=db.cursor(cursor=pymsql.cursors.Dictcursor) #加上参数指示以字典方式展示查找的数据,默认返回的数据类型是元组
- 执行sql语句:effect=cu.execute() #执行一条sql语句----->effect返回的是sql执行成功后受影响的行数
- 如果是操作数据库中的数据,还得做一个提交操作,否则修改不会生效:db.commit()
- 取出select语句执行后查找到的内容:
- res=cu.fetchone():返回一条数据,是一个元祖类型
- res=cu.fetchmany(n):取出前n条,返回一个二维元组类型
- res=cu.fetchall():取出所有查找到的数据,返回一个二维元组类型
- scroll回滚操作:cu.scroll(0,mode="absolute")/cu.scroll(0,mode="relative") #第一个参数表示移动的步长,第二个参数是表示移动模式,相对移动或绝对移动
- 获取插入数据后子增列最后的值:lastid=cu.lastrowid #是个属性,不是方法
代码示例
1 import pymysql 2 import time 3 4 #创建数据库连接 5 conn=pymysql.connect(host='localhost',port=3306,user='nanfy', 6 password="abc123!",db="db1",charset="utf8") #port是int型 7 8 #创建游标 9 cursor=conn.cursor(cursor=pymysql.cursors.DictCursor) 10 11 # effect=cursor.execute("select * from score") 12 # print(effect) 13 14 # res=cursor.fetchone() 15 # print(res) 16 17 18 #插入一条数据后,获取插入后自增列最大值 19 effect1=cursor.execute("insert into student(sname,gender,class_id) values (%s,%s,%s),(%s,%s,%s)", 20 21 22 ("南风","男",2,"北风",'女',1)) 23 print(effect1) 24 conn.commit() 25 26 #获取自增列最后插入的值 27 print(cursor.lastrowid)