python连接mysql数据库

1、安装mysql模块

pip install pymysql

2、创建表结构

先自己安装一个数据库,并在navicat 中创建表结构
创建unicom的数据

create database unicom DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

创建admin的表,包含id, username,password、mobile

CREATE TABLE admin(
id int not null auto_increment primary key,
username VARCHAR(16) not null,
password VARCHAR(64) not null,
mobile VARCHAR(11) not null);

3、python使用数据库

  • 插入数据,sql 写在一个字符串中
    在连接的时候指定数据库
import pymysql#1、连接mysql
conn = pymysql.connect(host="43.251.3.112",port=3306,user="root",passwd="123466",charset='utf8',db='unicom')
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)#2、发送指令
cursor.execute("insert into admin(username,password,mobile) values('张顺','123456','13687381354')")
#3、提交
conn.commit()#4、关闭连接
cursor.close()
conn.close()
  • 以占位符%s传值
    插入的值通过参数传入
    千万不要用字符串格式化去做SQL的拼接,安全隐患SQL注入
import pymysql#1、连接mysql
conn = pymysql.connect(host="43.251.3.112",port=3306,user="root",passwd="123466",charset='utf8',db='unicom')
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)#2、发生指令(千万不要用字符串格式化去做SQL的拼接,安全隐患SQL注入)
sql = "insert into admin(username,password,mobile) values(%s,%s,%s)"
cursor.execute(sql,["王飒","7654321","18711655432"])
#3、提交
conn.commit()#4、关闭连接
cursor.close()
conn.close()
  • 以字典传值
import pymysql#1、连接mysql
conn = pymysql.connect(host="43.251.3.112",port=3306,user="root",passwd="123466",charset='utf8',db='unicom')
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)#2、发生指令(千万不要用字符串格式化去做SQL的拼接,安全隐患SQL注入)
sql = "insert into admin(username,password,mobile) values(%(n1)s,%(n2)s,%(n3)s)"
cursor.execute(sql,{"n1":"王免","n2":"7654321","n3":"18711655412"})
#3、提交
conn.commit()#4、关闭连接
cursor.close()
conn.close()
  • 查询数据,执行select 语句,不需要commit
import pymysql#1、连接mysql
conn = pymysql.connect(host="43.251.3.112",port=3306,user="root",passwd="123466",charset='utf8',db='unicom')
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)#2、发生指令(千万不要用字符串格式化去做SQL的拼接,安全隐患SQL注入)
#sql = "insert into admin(username,password,mobile) values(%(n1)s,%(n2)s,%(n3)s)"
sql = "select * from admin"
cursor.execute(sql)
# res = cursor.fetchone()      #获取符合条件的第一条数据,如果数据为空,返回None
datalist = cursor.fetchall()     #获取到所有合法条件的数据,如果没有数据,返回空元祖
for item in datalist:print(item)#3、关闭连接
cursor.close()
conn.close()

查询出来的结果是:

{'id': 1, 'username': '张顺', 'password': '123456', 'mobile': '13687381354'}
{'id': 2, 'username': '王飒', 'password': '7654321', 'mobile': '18711655432'}
{'id': 3, 'username': '王免', 'password': '7654321', 'mobile': '18711655412'}
  • 删除数据
    跟插入一样的,只是sql 不一样
import pymysql#1、连接mysql
conn = pymysql.connect(host="43.251.3.112",port=3306,user="root",passwd="123466",charset='utf8',db='unicom')
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)#2、发生指令(千万不要用字符串格式化去做SQL的拼接,安全隐患SQL注入)
sql = "delete from admin where id=%s"
cursor.execute(sql,[3,])conn.commit()#4、关闭连接
cursor.close()
conn.close()
  • 修改数据
import pymysql#1、连接mysql
conn = pymysql.connect(host="43.254.3.133",port=5001,user="root",passwd="Mysql@si20230206_e",charset='utf8',db='unicom')
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)#2、发生指令(千万不要用字符串格式化去做SQL的拼接,安全隐患SQL注入)
sql = "update admin set mobile=%s where id=%s"
cursor.execute(sql,['1777777777',2,])conn.commit()#4、关闭连接
cursor.close()
conn.close()

4、总结

  • 在进行新增、删除、修改时,一定要记得commit, 不然数据库没有数据
  • 在查询时,不需要commit, 执行fetchall 或fetchone
  • 对于SQL语句不要用python的字符串格式化进行拼接,会被SQL注入,一定要用execute+ 参数

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/11742.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++对C的加强(全)

目录 C对C的加强 命名空间 为什么要使用命名空间 怎么使用命名空间 命名空间的定义 命名空间的使用 使用域解析符 :: 使用using声明 内联命名空间 嵌套命名空间 随时将新的成员加入命名空间 命名空间中 函数的声明和实现分开 无名命名空间 命名空间取别名 使用u…

安卓面试问题记录

目录 1. JNI和NDK1.谈谈你对JNI和NDK的理解2.简要的JNI调用过程:2. 线程、同步、异步1.Java创建线程的方式有几种?start()方法和 run()方法的区别2.Handler 机制和原理3.为什么在子线程中创建Handler会抛异常?4.Android中的ANR的解决方法5.intentservice有什么优点?6.okhtt…

QEMU源码全解析17 —— QOM介绍(6)

接前一篇文章:QEMU源码全解析16 —— QOM介绍(5) 本文内容参考: 《趣谈Linux操作系统》 —— 刘超,极客时间 《QEMU/KVM》源码解析与应用 —— 李强,机械工业出版社 特此致谢! 上一回讲解了Q…

【通讯录】--C语言

💐 🌸 🌷 🍀 🌹 🌻 🌺 🍁 🍃 🍂 🌿 🍄🍝 🍛 🍤 📃个人主页 :阿然成长日记 …

路由策略(重发布)

要求&#xff1a; 1、使用双点双向重发布 2、所有路由器进行最佳选路 3、存在备份路径&#xff0c;不得出现环路&#xff0c;和路由回馈 1.更改设备名称配置接口IP地址 R1 <Huawei>system-view [Huawei]sysname R1 [R1]interface GigabitEthernet 0/0/0 [R1-GigabitEt…

Linux和Mac环境下的Nginx安装教程

Linux安装 登录root账号&#xff0c;服务器环境为阿里云的Cent OS 7.6版本 执行yum install yum-utils 运行vim /etc/yum.repos.d/nginx.repo 输入&#xff1a; [nginx-stable]namenginx stable repobaseurlhttp://nginx.org/packages/centos/7/$basearch/gpgcheck1enable…

ChatGPT在语义理解和信息提取中的应用如何?

ChatGPT在语义理解和信息提取领域有着广泛的应用潜力。语义理解是指对文本进行深层次的理解&#xff0c;包括词义、句义和篇章义等层面的理解。信息提取是指从文本中自动抽取结构化的信息&#xff0c;如实体、关系、事件等。ChatGPT作为一种预训练语言模型&#xff0c;具有丰富…

Python深度学习“四大名著”之一【赠书活动|第二期《Python机器学习:基于PyTorch和Scikit-Learn》】

近年来&#xff0c;机器学习方法凭借其理解海量数据和自主决策的能力&#xff0c;已在医疗保健、 机器人、生物学、物理学、大众消费和互联网服务等行业得到了广泛的应用。自从AlexNet模型在2012年ImageNet大赛被提出以来&#xff0c;机器学习和深度学习迅猛发展&#xff0c;取…

MATLAB与ROS联合仿真(慕羽☆)全套开源资料索引

自2021年9月份开始进行MATLAB与ROS联合仿真相关的研究&#xff0c;至2021年12月份研究基本上结束&#xff0c;至今&#xff0c;已经近两年时间&#xff0c;期间曾收到过很多小伙伴的私信&#xff0c;想让我出点教程&#xff0c;期间我也曾多次想要抽点时间出教程&#xff0c;但…

112、SpringBoot中配置文件的加载顺序是怎样的?

SpringBoot中配置文件的加载顺序是怎样的&#xff1f; 优先级从高到低&#xff0c;高优先级的配置覆盖低优先级的配置&#xff0c;所有配置会形成互补配置。 命令行参数。所有的配置都可以在命令行上进行指定Java系统属性(System.getProperties());操作系统环境变量;jar包外部…

JMeter 怎么查看 TPS 数据教程,简单易懂

TPS 是软件测试结果的测量单位。一个事务是指一个客户机向服务器发送请求然后服务器做出反应的过程。客户机在发送请求时开始计时&#xff0c;收到服务器响应后结束计时&#xff0c;以此来计算使用的时间和完成的事务个数。在 JMeter 中&#xff0c;我们可以使用以下方法查看 T…

华为战略方法论:BLM模型之关键任务与依赖关系

内容简介 在 BLM 模型中&#xff0c;执行部分包括四个模块&#xff0c;分别是&#xff1a; 关键任务与依赖关系&#xff1b;组织与绩效&#xff1b;人才&#xff1b;氛围与文化。 详细内容&#xff0c;大家可以参看下面这张图。 这四个模块其实是可以进一步划分成两个关键点…

MFC自定义控件使用

用VS2005新建一个MFC项目,添加一个Custom Control控件在窗体 我们需要为自定义控件添加一个类。项目,添加类,MFC类 设置类名字,基类为CWnd,你也可以选择CDialog作为基类 类创建完成后,在它的构造函数中注册一个新的自定义窗体,取名为"MyWindowClass" WNDCL…

8.11 PowerBI系列之DAX函数专题-TopN中实现N的动态

需求 实现 1 ranking by amount rankx(allselected(order_2[产品名称]),[total amount]) 2 rowshowing_boolean var v_ranking [ranking by amount] var v_topN-no [topN参数 值] var v_result int( v_ranking < v_topN_no) return v_result 3 将度量值2放入视觉对象筛…

大数据Flink(五十二):Flink中的批和流以及性能比较

文章目录 Flink中的批和流以及性能比较 ​​​​​​​​​​​​​​一、Flink中的批和流

【网络云盘客户端】——上传文件的功能的实现

目录 上传文件功能的实现 uploadtask的设计 设置上传的槽函数 uploadFileAction接口 uploadFile接口 定时上传文件 进度条的设计 上传文件功能的实现 上传文件功能实现 1.双击 ”上传文件 “的 QListWidgetItem 或者 点击 “上传” 菜单项 都会弹出一个文件对话框 2.在文…

华为云安装MySQL后,本地工具连接MySQL失败

华为云安装MySQL后&#xff0c;本地连接失败 排查问题步骤&#xff1a; 在此之前需要在MySQL创建用户&#xff0c;并赋予权限。 1、能否ping通。 在本地命令行(Windows&#xff1a;winR)通过ping命令&#xff0c;ping服务器地址&#xff0c;看能否ping通。不能则需要检查本地…

【C++入门】浅谈类、对象和 this 指针

文章目录 一、前言二、类1. 基本概念2. 类的封装3. 使用习惯成员函数定义习惯成员变量命名习惯 三、对象1. 基本概念2. 类对象的存储规则 四、this 指针1. 基本概念2. 注意事项3. 经典习题4. 常见面试题 一、前言 在 C 语言中&#xff0c;我们用结构体来描述一个事物的多种属性…

ubuntu docker离线安装docker(.deb包方式)(成功)(附卸载方法)

参考文章&#xff1a;Install Docker Engine on Ubuntu 文章目录 安装步骤下载安装包拷贝到目标主机并执行安装命令 验证拉取运行容器测试build dockerfile测试持久运行容器测试主机重启后&#xff0c;docker各服务是否正常自启 卸载方法附&#xff1a;各安装包作用说明&#x…

C++的类型转换运算符:static_cast

C的类型转换运算符&#xff1a;static_cast static_cast 用于在相关类型的指针之间进行转换&#xff0c;还可显式地执行标准数据类型的类型转换—这种转换原本将自动或隐式地进行。用于指针时&#xff0c; static_cast 实现了基本的编译阶段检查&#xff0c;确保指针被转换为相…