python + mysql
1.连接mysql数据库,基本数据查询流程
# 1.连接 conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', password='', db='db8', charset='utf8') # 2.创建游标 cursor = conn.cursor() #注意%s需要加引号 sql = "select * from userinfo where username='%s' and pwd='%s'" %(user, pwd) # 3.执行sql语句 result=cursor.execute(sql) #执行sql语句,返回sql查询成功的记录数目 print(result) # 关闭游标 cursor.close()
# 关闭连接 conn.close()
2. 数据库增,删,改,操作
commit()方法:在数据库里增、删、改的时候,必须要进行提交,否则插入的数据不生效。
# 1.连接 conn = pymysql.connect(host='localhost', port=3306, user='root', password='', db='db', charset='utf8') # 2.创建游标 cursor = conn.cursor() # 操作 # 增 # sql = "insert into userinfo(username,pwd) values (%s,%s)" # effect_row = cursor.execute(sql,(username,pwd)) #同时插入多条数据 #cursor.executemany(sql,[('李四','110'),('王五','119')]) # print(effect_row)# # 改 # sql = "update userinfo set username = %s where id = 2" # effect_row = cursor.execute(sql,username) # print(effect_row) # 删 sql = "delete from userinfo where id = 2" effect_row = cursor.execute(sql) print(effect_row) #一定记得commit conn.commit() # 4.关闭游标 cursor.close() # 5.关闭连接 conn.close()
查询数据:
fetchone、fetchmany、fetchall
1 2 3 | fetchone():获取下一行数据,第一次为首行; fetchall():获取所有行数据源 fetchmany(4):获取4行数据 |
拿fetchall():举例
import pymysql # 1.连接 conn = pymysql.connect(host='localhost', port=3306, user='root', password='', db='db8', charset='utf8') # 2.创建游标 cursor = conn.cursor() sql = 'select * from userinfo' cursor.execute(sql) # 获取所有的数据 rows = cursor.fetchall() print(rows) # 4.关闭游标 cursor.close() # 5.关闭连接 conn.close() #运行结果 ((1, 'mjj', '123'), (3, '张三', '110'), (4, '李四', '119'))
默认情况下,我们获取到的返回值是元组,只能看到每行的数据,却不知道每一列代表的是什么,这个时候可以使用以下方式来返回字典,每一行的数据都会生成一个字典:
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
#在实例化的时候,将属性cursor设置为pymysql.cursors.DictCursor
{'id': 1, 'username': 'mjj', 'pwd': '123'}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构