当前位置: 首页 > news >正文

python.pymysql基础

讲一下pymysql的具体使用,在此之前默认大家会写sql语句。

下面是一些简单概念:

数据库管理系统

  • DBMS是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库。它是用户(或应用程序)与数据库之间的接口。
  • 常见的DBMSMySQL, Oracle, PostgreSQL, SQL Server, SQLite,Redis, MongoDB, Hbase, Neo4j等。

DDL: 数据定义语言:简称DDL(Data Definition Language) 作用: 用来定义数据库对象:数据库,表,列/字段等。 关键字: create,drop,alter等 DML: 数据操作语言:简称DML(Data Manipulation Language) 作用:用来对数据库中表的记录进行更新。 关键字: insert,delete,update等 DQL: 数据查询语言:简称DQL(Data Query Language) 作用:用来查询数据库中表的记录。 关键字: select,from,where等 DCL: 数据控制语言:简称DCL(Data Control Language) 用来定义数据库的访问权限和安全级别,及创建用户。

数据库分类:关系型数据库(SQL)和非关系型数据库(NoSQL)

可以粗略理解为:前者以表为主(包含字段,字段值),表内和表间有约束关系;

后者以键值对、文档、列族为主,没有固定结构

操作部分:

在pycharm中对MySQL进行操作前,我们需要先连接数据库:

需要安装库:

pip install pymysql

具体操作(需要保证pycharm已经连上数据库):

pymysql.connect()创建数据库连接

connect.cursor() 数据库连接中的方法 获取游标 用于后续的数据库操作(后面的游标用cur代称)

cur.execute(sql_op) #执行sql,其中sql_op是需要操作的SQL语句,操作完成后,需要进行.commit()提交才能完成对数据库中数据的修改,为保证数据安全,同样支持.rollback()操作

注意:在crud中,针对select查询操作是不需要提交的,可以直接从cur中获取结果

关于输入参数查询:为解决sql注入,将查询语句和参数分离,不使用fstring,使用%s占位符;在pymysql中所有的占位符都使用%s(会自动识别数据类型),这一点于python基础语法区分

import pymysql # 创建连接 connection = pymysql.connect( host='localhost', port=3306, user='',#此处填写用户名 与创建数据库连接时一致 password='',#此处填写密码 与创建数据库连接时一致 database='',#选择要操作的数据库 charset='utf8', autocommit=False ) #检查是否连接成功 if connection: print('success') print(connection) else: print('error') # 创建/获取游标 curs = connection.cursor() # 通过游标进行操作 row = curs.execute('select *from itheima.test_table') # 此处execute返回的是该操作影响了多少行的数据 print(row) print() result = curs.fetchone() # 真正的获取结果 print(result) results = curs.fetchall() # 本质是在控制cur指针,指针扫描过的数据不会再回头去看,该步骤的输出会缺少第一个查询的数据 print(results) curs.execute('select *from itheima.test_table') print(curs.fetchmany(10)) # 指定行数输出,超出范围则输出全部查询结果 curs.execute('select *from itheima.test_table') for item in curs: # 可遍历 以tuple元组形式输出 print(item) # crud操作 # row = curs.execute('insert into itheima.test_table(name,weight) value("taki",49);') # connection.commit() # 保证系列操作一同完成/取消 # try: # curs.execute('update itheima.test_table set weight=weight-10 where name="taki";') # curs.execute('update itheima.test_table set weight=weight-10 where name="aki";') # except Exception as e: # connection.rollback()#回滚 清空内存 # print(f'error{e}') # else: # connection.commit()#提交 try: sql_op = """ create table if not exists new_table( id int primary key AUTO_INCREMENT, name varchar(20), weight int ); """ curs.execute(sql_op) except Exception as e: connection.rollback() # 回滚 执行undolog 清空缓冲区 print(f'error{e}') else: connection.commit() # 提交 name = input('姓名:') weight = int(input('体重:')) #外层使用单引号的话内层需要用双引号;外层双引号的话则相反 sql_op = f'select * from test_table where name="{name}" and weight={weight};' row = curs.execute(sql_op) if row: print(row,'success') #解决sql注入,将查询语句和参数分离 不使用fstring,使用%s占位符 在pymysql中所有的占位符都使用%s(会自动识别数据类型),这一点于python基础语法区分 sql_op = 'select * from test_table where name=%s and weight=%s;' cs = (name,weight) row = curs.execute(sql_op,cs) if row: print(row,'success') # 关闭游标 curs.close() # 关闭连接 connection.close()

pymysql操作流程总结:

1.导入pymysql

2.使用pymysql.connect()创建数据库连接

3.获取cursor游标

4.通过cursor执行SQL语句

5.关闭cursor

6.关闭数据库连接

http://www.jsqmd.com/news/615237/

相关文章:

  • Contextual Retrieval 技术让检索准确率提升 67%!AI 开发者必看,解决 RAG 核心痛点!
  • 再次革新 .NET 的构建和发布方式(一)丛
  • 电缆生产厂家哪家好?2026年4月电缆生产厂家甄选 - 品牌2026
  • 如何快速构建诗歌API:PoetryDB开源项目完整指南 [特殊字符]
  • Maomi.In | .NET 全能多语言解决方案鞍
  • 5分钟快速部署NorthwindTraders电商应用:新手完整指南 [特殊字符]
  • Excel数据分析基础入门篇(三)
  • 2026最新大模型就业方向与学习路线图!小白也能轻松入门进阶!
  • “人工智能+工业”新助力:JBoltAI智能图检解析
  • 如何快速掌握 Ego:Go 语言的终极 ERB 风格模板引擎教程
  • Docker垃圾清理终极指南:保留最新镜像与强制删除高级技巧
  • 麒麟系统离线安装应用 教程
  • 大数据知识图谱之深度学习:基于BERT+LSTM+CRF深度学习识别模型医疗知识图谱问答可视化系统
  • 掌握Agent核心:从LLM到智能决策,揭秘AI大模型应用开发新风口!
  • 终极Python开发指南:Anaconda如何将Sublime Text 3变身高性能IDE
  • 记一次SQL注入流量分析 | 添柴不加火兄
  • C 标准库 - `<stdio.h>`
  • IOSSecuritySuite 安全测试与评估:如何验证防护效果的真实性
  • Sabaki国际化与本地化:打造多语言围棋编辑环境
  • MySQL锁机制:从全局锁到行级锁的深度解读澳
  • 如何使用KOReader实现EPUB到PDF的高效转换:完整指南
  • AI大模型风口,你准备好了吗?AI大模型就业方向指南,程序员必备,建议收藏!
  • 终极指南:如何用Anaconda将Sublime Text 3打造成专业Python IDE
  • YOLOv12训练全攻略:从数据准备到模型部署的完整流程
  • 告别提取码困扰:baidupankey让百度网盘资源获取效率倍增
  • 【软考备考】一篇带你完整梳理高级-系统分析师必考知识及解题思路(全网资源整合)
  • 如何用Tweepy构建强大的Twitter数据分析报告:5个高级搜索聚合技巧
  • Futhark社区生态与未来发展:核心团队、开源贡献与路线图展望
  • Git 零基础入门超详细教程 | 后端小白必看:Git 指令一篇吃透(附常用命令速查表)
  • RDF 实例