python数据库操作

数据库基本操作

    • 一、 数据库操作
      • 1. mysql 驱动安装:
      • 2. mysql基本操作:
    • 二、代码演示

一、 数据库操作

1. mysql 驱动安装:

MySQL 是最流行的关系型数据库管理系统,如果你不熟悉 MySQL,可以阅读我们的 MySQL 教程。
本章节我们为大家介绍使用 mysql-connector 来连接使用 MySQL, mysql-connector 是 MySQL 官方提供的驱动器。
我们可以使用 pip 命令来安装 mysql-connector:
python -m pip install mysql-connector

2. mysql基本操作:

创建连接
创建数据库
创建表
插入数据
批量插入数据
查询数据(like、where )
排序(order)
修改数据
删除数据
删除表

二、代码演示

#!/usr/bin/env python3
# -*- coding: UTF-8 -*-
# @Date : 2024/4/30 16:45
# @Author : water
# @Description : 数据库操作
"""
mysql 驱动安装:MySQL 是最流行的关系型数据库管理系统,如果你不熟悉 MySQL,可以阅读我们的 MySQL 教程。本章节我们为大家介绍使用 mysql-connector 来连接使用 MySQL, mysql-connector 是 MySQL 官方提供的驱动器。我们可以使用 pip 命令来安装 mysql-connector:python -m pip install mysql-connector
mysql:创建连接创建数据库创建表插入数据批量插入数据查询数据(like、where )排序(order)修改数据删除数据删除表"""import mysql.connector#  创建数据库连接db = mysql.connector.connect(host="172.22.1.199",user="root",password="Sxxc@2024",# mysql版本太低:报错;mysql.connector.errors.NotSupportedError: Authentication plugin 'caching_sha2_password' is not supported# auth_plugin="mysql_native_password",  # mysql8 可能支持caching_sha2_passworddatabase="mysql"
)print(db)#  创建数据库
cursor = db.cursor()
# cursor.execute("CREATE DATABASE test_db")
cursor.execute("show databases")
for x in cursor:print(x)# 创建表,如果不指定,默认被创建到 mysql了;
cursor.execute("USE test_db")
# cursor.execute("CREATE TABLE customers (name VARCHAR(255), address VARCHAR(255))")
cursor.execute("SHOW TABLES")
for x in cursor:print(x)print("主键设置")# 创建表的时候我们一般都会设置一个主键(PRIMARY KEY),我们可以使用 "INT AUTO_INCREMENT PRIMARY KEY" 语句来创建一个主键,主键起始值为 1,逐步递增。
# 如果我们的表已经创建,我们需要使用 ALTER TABLE 来给表添加主键:# cursor.execute("ALTER TABLE customers ADD COLUMN id INT AUTO_INCREMENT PRIMARY KEY")# 插入数据
sql = "INSERT INTO customers (name, address) VALUES (%s, %s)"
val = ("John", "Highway 21")
cursor.execute(sql, val)
# db.commit()
print(cursor.rowcount, "记录插入成功。")# 批量插入 :批量插入使用 executemany() 方法,该方法的第二个参数是一个元组列表,包含了我们要插入的数据:
sql = "INSERT INTO customers (name, address) VALUES (%s, %s)"
val = [("Peter", "Lowstreet 4"),("Amy", "Apple st 652"),("Hannah", "Mountain 21"),("Michael", "Valley 345"),("Sandy", "Ocean blvd 2"),("Betty", "Green Grass 1"),("Richard", "Sky st 331"),("Susan", "One way 98"),("Vicky", "Yellow Garden 2"),("Ben", "Park Lane 38"),("William", "Central st 954"),("Chuck", "Main Road 989"),("Viola", "Sideway 1633")]
cursor.executemany(sql, val)
# db.commit()
print(cursor.rowcount, "记录插入成功。ID: ", cursor.lastrowid)# 查询数据cursor.execute("SELECT * FROM customers")
results = cursor.fetchall()
for x in results:print(x)print("读取一条数据")
# 读取一条数据
# cursor.execute("SELECT * FROM customers")
# result = cursor.fetchone()
# print(result)
print("where,读取数据")
# where 条件语句
cursor.execute("SELECT * FROM customers WHERE name like '%o%'")
results_like = cursor.fetchall()
for x in results_like:print(x)print("排序")
# 排序
cursor.execute("SELECT * FROM customers ORDER BY name")
my_result = cursor.fetchall()
for x in my_result:print(x)print("Limit")
cursor.execute("SELECT * FROM customers ORDER BY name LIMIT 10 offset 4")  # 从第5条开始读取前 10 条记录:
like_result = cursor.fetchall()
for x in like_result:print(x)# 删除记录 :为了防止数据库查询发生 SQL 注入的攻击,我们可以使用 %s 占位符来转义删除语句的条件:
cursor.execute("DELETE FROM customers WHERE id = %s", (3,))  # 注意:要慎重使用删除语句,删除语句要确保指定了 WHERE 条件语句,否则会导致整表数据被删除。
db.commit()
print(cursor.rowcount, "条记录被删除")# 更新表数据
cursor.execute("UPDATE customers SET address = 'Canyon 123' WHERE name = 'Michael'")
db.commit()
print(cursor.rowcount, "条记录被修改")# 删除表
cursor.execute("DROP TABLE customers")
db.close()

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

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

相关文章

数据结构与算法02-排序算法

介绍 排序算法是计算机科学中被广泛研究的一个课题。历时多年,它发展出了数十种算法,这些 算法都着眼于一个问题:如何将一个无序的数字数组整理成升序?先来学习一些“简单排序”,它们很好懂,但效率不如其他…

闽盾杯 2021 DNS协议分析

今年CISCN的Tough DNS 的前戏就是DNS协议分析 直接可以查找到flag的base64形式Zmxh 发现就是请求的dnslog 携带的数据 过滤器就是 dns tshark -r dns.pcapng -T json -Y "dns" >1.json 字段选择 dns.qry.name tshark -r dns.pcapng -T json -Y "dns"…

内网渗透-隧道搭建ssp隧道代理工具

内网渗透-隧道搭建&ssp隧道代理工具 目录 内网渗透-隧道搭建&ssp隧道代理工具spp隧道代理工具spp工作原理图cs上线主机spp代理通信服务端配置客户端配置CS配置设置CS生成木马的监听器配置CS监听上线的监听器生成木马 spp隧道搭建服务端配置客户端配置CS配置 内网穿透&a…

基于语音识别的智能电子病历(四)语音识别的要求

从本章开始 讲解 医疗行业的语音识别。在开始之前先聊聊 医疗行业的语音识别的一些要求。 识别的结果要满足下面的要求: 一、Capitalization单词大写处理 句首单词首字母大写.人称代词I出现在句中任何位置都要大写.标题(heading)全部字母大写.例如: PAST MEDICAL…

根据模板和git commit自动生成日·周·月·季报

GitHub - qiaotaizi/dailyreport: 日报生成器 GitHub - yurencloud/daily: 程序员专用的日报、周报、月报、季报自动生成器! config.json: { "Author": "gitname", "Exclude": ["update:", "add:", "…

实际测试stm32中断优先级

HAL_NVIC_SetPriority(IRQn_Type IRQn, uint32_t PreemptPriority, uint32_t SubPriority); void HAL_NVIC_EnableIRQ(IRQn_Type IRQn); void HAL_NVIC_DisableIRQ(IRQn_Type IRQn);第一个函数 HAL_NVIC_SetPriority 是用来设置单个优先级的抢占优先级和响应优先级的值。第二个…

恒压频比开环控制系统Matlab/Simulink仿真分析(SPWM控制方式)

介绍恒压频比的开环控制方法驱动永磁同步电机的转动,首先分析恒压频比的控制原理,然后在Matlab/Simulink中进行永磁同步电机恒压频比开环控制系统的仿真分析,最后将Simulink中的恒压频比控制算法生成代码加载到实际工程中进行工程实现。 一、…

丝绸之路网络安全论坛成功举办,开源网安受邀分享软件供应链安全落地经验

5月23日,2024第八届丝绸之路网络安全论坛在陕西宾馆会议中心成功举办,本次论坛由陕西省信息网络安全协会主办,以“汇聚万千智慧 夯实安全堤坝”为主题,邀请业内专家学者、企业代表、行业代表共计400余人参加。开源网安常务副总王颉…

【PostgreSQL17新特性之-冗余IS [NOT] NULL限定符的处理优化】

在执行一个带有IS NOT NULL或者NOT NULL的SQL的时候,通常会对表的每一行,都会进行检查以确保列为空/不为空,这是符合常理的。 但是如果本身这个列上有非空(NOT NULL)约束,再次检查就会浪费资源。甚至有时候…

Leetcode3165. 不包含相邻元素的子序列的最大和(Go中的线段树分治包含多类数据使用maintain进行维护)

题目截图 题目分析 不能取相邻的,就是打家劫舍 然后更改某一个值就是单点更新 更新后,需要更新区间的值 需要注意的是,使用分治时需要考虑到一头一尾的问题,所以有4种情况(选or不选在两个位置) 这四种情况…

tomcat-根据请求url映射servlet

之前说到对请求行和请求头进行解析,获取到请求信息,现在我们有了请求信息,就要根据请求url映射到servlet进行处理,接下来开始看这个过程。tomcat处理请求的线程中CoyoteAdapter.java的service中,通过postParseRequest(req, reques…

编程入门(七)【虚拟机VMware安装Linux系统Ubuntu】

读者大大们好呀!!!☀️☀️☀️ 🔥 欢迎来到我的博客 👀期待大大的关注哦❗️❗️❗️ 🚀欢迎收看我的主页文章➡️寻至善的主页 文章目录 🔥前言🚀Ubuntu知多少🚀安装的前期准备&am…

SQL—DQL之执行顺序(基础)

一、引言 1、编写顺序 2、执行顺序 介绍: DQL语句(数据查询语句) 1、首先先执行的是 FROM ,通过 FROM 来决定我要查询的是哪一张表的数据。 2、紧接着通过 WHERE 来指定查询的条件。 3、第三步就是通过 GROUP BY 以及 HAVING 来…

Nginx 实战-03-nginx 负载均衡

前言 大家好,我是老马。很高兴遇到你。 我们为 java 开发者实现了 java 版本的 nginx https://github.com/houbb/nginx4j 如果你想知道 servlet 如何处理的,可以参考我的另一个项目: 手写从零实现简易版 tomcat minicat 手写 nginx 系列 …

中国BI步入增长大周期,腾讯云ChatBI加速AI+BI融合

过去十年,大数据技术的快速发展,让数据消费前进一大步,数据价值得到一定程度的挖掘与释放,真正开启了“用数”的大时代。但数据分析繁杂的技术栈、复杂的处理过程以及程式化的交互方式,让“数据消费”的门槛始终降不下…

现在的时代,您必会的“调教”AI技巧

人工智能大行其道,如何借势?始于问询。要得要得预期,精于“提问技巧”! (笔记模板由python脚本于2024年05月30日 18:37:27创建,本篇笔记适合有独立编程基础的coder翻阅) 【学习的细节是欢悦的历程】 Python 官网&#…

文件包含漏洞简介

漏洞原理 程序开发人员通常会把可重复使用的函数写到单个文件中,在使用其它函数时,直接调用此文件,而无需再次编写,这种调用文件的过程一般称为包含。程序开发人员都希望代码更加灵活,所以通常会将被包含的文件设置…

基于 Apache Doris 的实时/离线一体化架构,赋能中国联通 5G 全连接工厂解决方案

作者:田向阳,联通西部创新研究院 大数据专家 共创:SelectDB 技术团队 导读: 数据是 5G 全连接工厂的核心要素,为支持全方位的数据收集、存储、分析等工作的高效进行,联通 5G 全连接工厂从典型的 Lambda 架…

Flutter 中的 CupertinoSliverRefreshControl 小部件:全面指南

Flutter 中的 CupertinoSliverRefreshControl 小部件:全面指南 Flutter 是一个流行的跨平台 UI 框架,它允许开发者使用 Dart 语言来构建高性能、美观的移动、Web 和桌面应用。在 Flutter 的滚动组件中,CupertinoSliverRefreshControl 是一个…

数据排序的艺术:快速排序及其优化之旅

快速排序:从基础到优化 快速排序是计算机科学中最著名的排序算法之一,由C. A. R. Hoare在1960年提出。它是一种分治法策略的应用,广泛用于各种场景,从数据库的查询优化到大数据处理,再到我们日常使用的文件排序。 快…