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

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()

相关文章:

  • 校园导航系统C++
  • ReDos攻击浅析
  • 【揭秘】如何借助聚道云软件连接器,实现差旅管理新飞跃!
  • 神器!!Python热重载调试【送源码】
  • 【康耐视国产案例】智能AI相机机器视觉精准快速实现包裹标签的智能粘贴
  • 问题排查|记录一次基于mymuduo库开发的服务器错误排查(段错误--Segmentation fault (core dumped))
  • 虚拟现实环境下的远程教育和智能评估系统(一)
  • 头歌数据结构与算法课程设计中-硬币找零
  • vue项目中markdown显示为html
  • MatLab命令行常用命令记录
  • 华为昇腾310 ATC模型转换、CPP推理案例使用
  • finetuning大模型准备(基于Mac环境)
  • SpringBoot 基于jedis实现Codis高可用访问
  • MySQL 命令总结篇-思维导图
  • 关于linux查询free内存消耗命令
  • (ckeditor+ckfinder用法)Jquery,js获取ckeditor值
  • 「译」Node.js Streams 基础
  • 【node学习】协程
  • AzureCon上微软宣布了哪些容器相关的重磅消息
  • ES6 ...操作符
  • gcc介绍及安装
  • JDK 6和JDK 7中的substring()方法
  • JS正则表达式精简教程(JavaScript RegExp 对象)
  • leetcode378. Kth Smallest Element in a Sorted Matrix
  • Lsb图片隐写
  • miniui datagrid 的客户端分页解决方案 - CS结合
  • Netty 框架总结「ChannelHandler 及 EventLoop」
  • niucms就是以城市为分割单位,在上面 小区/乡村/同城论坛+58+团购
  • nodejs实现webservice问题总结
  • node-sass 安装卡在 node scripts/install.js 解决办法
  • spring学习第二天
  • Vue2.x学习三:事件处理生命周期钩子
  • 翻译--Thinking in React
  • 使用阿里云发布分布式网站,开发时候应该注意什么?
  • 适配mpvue平台的的微信小程序日历组件mpvue-calendar
  • 智能合约Solidity教程-事件和日志(一)
  • 关于Android全面屏虚拟导航栏的适配总结
  • # Apache SeaTunnel 究竟是什么?
  • # wps必须要登录激活才能使用吗?
  • #、%和$符号在OGNL表达式中经常出现
  • #if和#ifdef区别
  • #控制台大学课堂点名问题_课堂随机点名
  • (02)Cartographer源码无死角解析-(03) 新数据运行与地图保存、加载地图启动仅定位模式
  • (2)从源码角度聊聊Jetpack Navigator的工作流程
  • (8)STL算法之替换
  • (Git) gitignore基础使用
  • (Mirage系列之二)VMware Horizon Mirage的经典用户用例及真实案例分析
  • (附源码)计算机毕业设计大学生兼职系统
  • (亲测有效)解决windows11无法使用1500000波特率的问题
  • (全部习题答案)研究生英语读写教程基础级教师用书PDF|| 研究生英语读写教程提高级教师用书PDF
  • (生成器)yield与(迭代器)generator
  • (算法)求1到1亿间的质数或素数
  • (一)appium-desktop定位元素原理
  • (转)一些感悟
  • .a文件和.so文件