💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
[TOC] ## 一 介绍 在python程序中操作数据库要用到了pymysql模块,该模块本质就是一个套接字客户端软件,使用前需要先安装 ~~~ pip3 install pymysql ~~~ ## 二 **链接、执行sql、关闭** ``` # 1.导入模块 import pymysql user=input('用户名: ').strip() pwd=input('密码: ').strip() # 2.创建链接 conn=pymysql.connect(host='localhost',user='root',password='123',database='testdb',charset='utf8') # 3.设置游标 cursor=conn.cursor() #结果集默认以元组显示 #cursor=conn.cursor(cursor=pymysql.cursors.DictCursor) #字典结果集 # 4.执行sql语句[查询] sql='select * from userinfo where name=%s and password=%s' res=cursor.execute(sql,[user,pwd]) #此写法可解决sql注入问题。 print(res) # 5.关闭游标和连接 cursor.close() conn.close() # 6.其他 if res: print('登录成功') else: print('登录失败') ``` ## 三 **数据查询:** 执行查询后,默认返回的是查询出的行数,如果要查看查询出的数据,需要用到下列4个函数来实现 1. fetchone(n) 显示游标指向的那条数据,每查询一次游标下移一次 2. fetchmany(n) 显示到第n条数据 3. fetchall() 显示所有查询出的数据 4. scroll(n) 移动游标位置 ~~~ import pymysql conn=pymysql.connect(host='localhost',user='root',password='123',database='testdb',charset='utf8') cursor=conn.cursor() sql='select * from userinfo;' #1. 获取所有查询出的数据 res=cursor.execute(sql) res1=cursor.fetchall() print('所有:',res1) #2. 获取单行数据 res=cursor.execute(sql) #查看了数据后,结果集游标就变化了,所以每次都查询执行sql res2=cursor.fetchone() res3=cursor.fetchone() print('单行:',res2,res3) #3. 获取查询出的前三行数据 res=cursor.execute(sql) res4=cursor.fetchmany(3) print('前三行:',res4) #4.修改游标后获取单行数据 res=cursor.execute(sql) cursor.scroll(3,mode='absolute') # 相对绝对位置移动 # cursor.scroll(3,mode='relative') # 相对当前位置移动 res=cursor.execute(sql) res5=cursor.fetchone() print('游标:',res2,res3) conn.commit() cursor.close() conn.close() #执行结果 所有: ((1, 'luogang', 22), (2, 'luo', 23), (3, 'gang1', 23), (4, 'gang2', 23), (5, 'gang3', 23)) 单行: (1, 'luogang', 22) (2, 'luo', 23) 前三行: ((1, 'luogang', 22), (2, 'luo', 23), (3, 'gang1', 23)) 游标: (1, 'luogang', 22) (2, 'luo', 23) ~~~ ## 四 **数据修改** 数据修改和数据查询方法是一样的,写好sql然后用`cursor.execute()`执行sql,只返回影响的行数. 如果是插入语句,且有自增ID,可以通过`lastrowid`方法显示最后 ~~~ import pymysql conn=pymysql.connect(host='localhost',user='root',password='123',database='testdb',charset='utf8') cursor=conn.cursor() #1.插入语句 sql='insert into userinfo(name,age) values(%s,%s);' res=cursor.execute(sql,("root",36)) print('插入:',res) print('最后ID:',cursor.lastrowid) #2. 更新语句:略 conn.commit() #提交后才发现表中插入记录成功 cursor.close() conn.close() #执行结果: 插入: 1 最后ID: 7 ~~~