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

【第2篇】 Python与数据库基础

1. 数据库的基本概念

1.1 表(Table)

  • 表是数据库中存储数据的基本单位,由行和列组成。
  • 例如:users 表可以存储用户信息,每一行代表一个用户,每一列代表用户的属性(如姓名、年龄)。

1.2 字段(Field/Column)

  • 字段是表中的列,用于存储特定类型的数据。
  • 例如:users 表中的 name 字段存储用户的姓名,age 字段存储用户的年龄。

1.3 索引(Index)

  • 索引是用于加速数据检索的数据结构,类似于书籍的目录。
  • 例如:在 users 表的 name 字段上创建索引,可以加快按姓名查询的速度。

1.4 主键(Primary Key)

  • 主键是表中唯一标识每一行的字段,不能重复且不能为空。
  • 例如:users 表中的 id 字段可以作为主键,确保每个用户有唯一的标识。

1.5 外键(Foreign Key)

  • 外键是用于建立表与表之间关系的字段,指向另一张表的主键。
  • 例如:orders 表中的 user_id 字段可以作为外键,指向 users 表的 id 字段,表示订单属于哪个用户。

1.6 事务(Transaction)

  • 事务是一组数据库操作,要么全部成功,要么全部失败,确保数据的一致性。
  • 例如:转账操作需要在一个事务中完成,确保从一个账户扣款和向另一个账户加款同时成功或失败。

2. Python 连接数据库的基本方法

Python 提供了多种库来连接和操作数据库,常见的包括 sqlite3pymysqlpsycopg2 等。以下是 Python 连接数据库的基本方法以及数据库的基本概念。

2.1 SQLite

SQLite 是一个轻量级的嵌入式数据库,适合小型应用或原型开发。Python 内置了 sqlite3 模块,无需额外安装。

连接 SQLite 数据库
import sqlite3# 连接数据库(如果不存在则创建)
conn = sqlite3.connect('example.db')# 创建游标对象
cursor = conn.cursor()# 创建表
cursor.execute('''CREATE TABLE IF NOT EXISTS users(id INTEGER PRIMARY KEY, name TEXT, age INTEGER)''')# 插入数据
cursor.execute("INSERT INTO users (name, age) VALUES ('Alice', 25)")# 提交事务
conn.commit()# 查询数据
cursor.execute("SELECT * FROM users")
print(cursor.fetchall())# 关闭连接
conn.close()

2.2 MySQL

MySQL 是一个流行的关系型数据库,使用 pymysql 库可以连接 MySQL 数据库。

安装 pymysql
pip install pymysql
连接 MySQL 数据库
import pymysql# 连接数据库
conn = pymysql.connect(host='localhost',user='root',password='password',database='test_db'
)# 创建游标对象
cursor = conn.cursor()# 创建表
cursor.execute('''CREATE TABLE IF NOT EXISTS users(id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255), age INT)''')# 插入数据
cursor.execute("INSERT INTO users (name, age) VALUES ('Bob', 30)")# 提交事务
conn.commit()# 查询数据
cursor.execute("SELECT * FROM users")
print(cursor.fetchall())# 关闭连接
conn.close()

2.3 PostgreSQL

PostgreSQL 是一个功能强大的开源关系型数据库,使用 psycopg2 库可以连接 PostgreSQL 数据库。

安装 psycopg2
pip install psycopg2
连接 PostgreSQL 数据库
import psycopg2# 连接数据库
conn = psycopg2.connect(host='localhost',user='postgres',password='password',database='test_db'
)# 创建游标对象
cursor = conn.cursor()# 创建表
cursor.execute('''CREATE TABLE IF NOT EXISTS users(id SERIAL PRIMARY KEY, name VARCHAR(255), age INT)''')# 插入数据
cursor.execute("INSERT INTO users (name, age) VALUES ('Charlie', 35)")# 提交事务
conn.commit()# 查询数据
cursor.execute("SELECT * FROM users")
print(cursor.fetchall())# 关闭连接
conn.close()

2.4 示例:数据库操作的综合应用

以下是一个综合示例,展示如何使用 Python 连接 SQLite 数据库,并进行基本的增删改查操作。

import sqlite3# 连接数据库
conn = sqlite3.connect('example.db')
cursor = conn.cursor()# 创建表
cursor.execute('''CREATE TABLE IF NOT EXISTS users(id INTEGER PRIMARY KEY, name TEXT, age INTEGER)''')# 插入数据
cursor.execute("INSERT INTO users (name, age) VALUES ('Alice', 25)")
cursor.execute("INSERT INTO users (name, age) VALUES ('Bob', 30)")# 提交事务
conn.commit()# 查询数据
cursor.execute("SELECT * FROM users")
print("查询结果:", cursor.fetchall())# 更新数据
cursor.execute("UPDATE users SET age = 26 WHERE name = 'Alice'")
conn.commit()# 删除数据
cursor.execute("DELETE FROM users WHERE name = 'Bob'")
conn.commit()# 查询数据
cursor.execute("SELECT * FROM users")
print("更新后的查询结果:", cursor.fetchall())# 关闭连接
conn.close()

4. 总结

  • 数据库的基本概念包括表、字段、索引、主键、外键和事务。
  • Python 提供了多种库来连接和操作数据库,如 sqlite3pymysqlpsycopg2
  • 掌握这些基础知识后,就可以使用Python对数据库进行基本的操作了,如果想要精进,还要多多实践。

相关文章:

【第2篇】 Python与数据库基础

1. 数据库的基本概念 1.1 表(Table) 表是数据库中存储数据的基本单位,由行和列组成。例如:users 表可以存储用户信息,每一行代表一个用户,每一列代表用户的属性(如姓名、年龄)。 …...

CTFHUB-web进阶-php

我们用蚁剑中的这个插件来做这些关卡 一.LD_PRELOAD 发现这里有一句话木马,并且把ant给了我们,我们直接连接蚁剑 右键 选择模式,都可以试一下,这里第一个就可以 点击开始 我们进入到目录,刷新一下,会有一个…...

深度学习使用Anaconda打开Jupyter Notebook编码

新手入门深度学习使用Anaconda打开Jupyter Notebook编码 1. 安装Anaconda 第一种是Anaconda官网下载安装包,但是很慢,不太建议 第二种使用国内清华大学镜像源下载 选择适合自己电脑的版本,支持windows,linux系统 下载完之后自行…...

金蝶V10中间件的使用

目录 环境准备搭建过程配置修改应用部署 环境准备 Linux内核服务器JDK1.8安装包:AAS-V10.zip程序包:***.war 搭建过程 将安装包上传至服务器opt目录下,官方给定的默认服务主目录为“/opt/AAS-V10/ApusicAS/aas/”;解压安装包(解…...

Firewalld 防火墙详解:深入理解与实践指南

在现代网络环境中,防火墙是保护系统和网络不受未授权访问的关键工具。firewalld是Linux系统中广泛使用的动态防火墙管理工具,它提供了强大的功能和灵活的配置选项。本文将深入探讨firewalld防火墙的工作原理、配置和管理,以及如何在实际环境中…...

linux系统编程(五)

1、信号 信号是事件发生时对进程的通知机制,针对每个信号都定义了一个唯一的整数,这些整数定义在signal.h中。 常见信号如下: SIGABRT:进程调用abort函数,系统向进程发送此信号,终止进程并产生核心转储文…...

Effective C++ 条款 16:成对使用 `new` 和 `delete` 时要采取相同形式

文章目录 条款 16:成对使用 new 和 delete 时要采取相同形式核心思想示例代码错误用法分析设计建议总结 条款 16:成对使用 new 和 delete 时要采取相同形式 核心思想 一致性要求 当使用 new 分配内存时,必须在相应的 delete 操作中保持一致&a…...

【HarmonyOS NEXT】鸿蒙原生应用“上述”

鸿蒙原生应用“上述”已上架华为应用市场,欢迎升级了鸿蒙NEXT系统的用户下载体验,用原生更流畅。 个人CSDN鸿蒙专栏欢迎订阅:https://blog.csdn.net/weixin_44640245/category_12536933.html?fromshareblogcolumn&sharetypeblogcolumn&a…...

【人工智能】使用Python构建推荐系统:从协同过滤到深度学习

《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 推荐系统是现代互联网的重要组成部分,广泛应用于电商、社交媒体和流媒体平台中。本文详细介绍了如何使用Python构建推荐系统,从传统的协同…...

店铺营业状态设置

admineShopController RestController("admineShopController") RequestMapping("/admin/shop") Api(tags "店铺相关接口") Slf4j public class ShopController {//设置一个常量 因为经常使用public static final String KEY "SHOP-ST…...

batchnorm和layernorm的理解

batchnorm和layernorm原理和区别 batchnorm 原理 对于一个特征tensor x ∈ R b c f 1 f 2 … x \in \mathbb{R}^{b \times c \times f_1 \times f_2 \times \dots} x∈Rbcf1​f2​… 其中, c c c是通道, f f f是通道中各种特征,batchno…...

在git commit之前让其自动执行一次git pull命令

文章目录 背景原因编写脚本测试效果 背景原因 有时候可以看到项目的git 提交日志里好多 Merge branch ‘master’ of …记录。这些记录是怎么产生的呢? 是因为在本地操作 git add . 、 git commit -m "xxxxx"时,没有提前进行git pull操作&…...

【Rust自学】6.3. 控制流运算符-match

喜欢的话别忘了点赞、收藏加关注哦,对接下来的教程有兴趣的可以关注专栏。谢谢喵!(・ω・) 6.3.1. 什么是match match允许一个值与一系列模式进行匹配,并执行匹配的模式对应的代码。模式可以是字面值、变量名、通配符等…...

大模型应用技术系列(三): 深入理解大模型应用中的Cache:GPTCache

前言 无论在什么技术栈中,缓存都是比较重要的一部分。在大模型技术栈中,缓存存在于技术栈中的不同层次。本文将主要聚焦于技术栈中应用层和底层基座之间中间件层的缓存(个人定位),以开源项目GPTCache(LLM的语义缓存)为例,深入讲解这部分缓存的结构和关键实现。 完整技术…...

『大模型笔记』评估大型语言模型的指标:ELO评分,BLEU,困惑度和交叉熵介绍以及举例解释

评估大型语言模型的指标:ELO评分,BLEU,困惑度和交叉熵介绍以及举例解释 文章目录 一. ELO Rating大模型的elo得分如何理解1. Elo评分的基本原理2. 示例说明3. 大模型中的Elo得分总结3个模型之间如何比较计算,给出示例进行解释1. 基本原理扩展到三方2. 示例计算第一场: A A…...

深度解析:Maven 和 Gradle 的使用比较及常见仓库推荐

Maven 和 Gradle 是 Java 项目中最常用的构建工具。它们各有优势,适用于不同的场景。本文将对两者进行详细的对比,并推荐一些常用的 Maven 和 Gradle 仓库,帮助开发者高效管理依赖。 一、Maven 和 Gradle 的使用比较 1.1 基本介绍 Maven 基…...

SQLite本地数据库的简介和适用场景——集成SpringBoot的图文说明

前言:现在项目普遍使用的数据库都是MySQL,而有些项目实际上使用SQLite既足矣。在一些特定的项目中,要比MySQL更适用。 这一篇文章简单的介绍一下SQLite,对比MySQL的优缺点、以及适用的项目类型和集成SpringBoot。 1. SQLite 简介 …...

管理面板Ajenti的在Windows10下Ubuntu24.04/Ubuntu22.04里的安装

Ajenti是一款基于Web的开源系统管理控制面板,可用于通过Web浏览器,管理远程系统管理性任务,这一点与 Webmin模块 非常相似。 Ajenti是一款功能非常强大的轻型工具,它提供了快速的、反应灵敏的Web界面,可用于管理小型服…...

在Python如何用Type创建类

文章目录 一,如何创建类1:创建一个简单类2:添加属性和方法3:动态继承父类4:结合元类的使用总结 二.在什么情境下适合使用Type创建类1. **运行时动态生成类**2. **避免重复代码**3. **依赖元类或高级元编程**4. **动态扩…...

Android学习19 -- NDK4--共享内存(TODO)

在安卓的NDK(Native Development Kit)中,C共享内存通常用于不同进程间的通信,或者在同一进程中多线程之间共享数据。这种方法相较于其他形式的IPC(进程间通信)来说,具有更高的性能和低延迟。共享…...

接口测试中缓存处理策略

在接口测试中,缓存处理策略是一个关键环节,直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性,避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明: 一、缓存处理的核…...

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...

Docker 离线安装指南

参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性,不同版本的Docker对内核版本有不同要求。例如,Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本,Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...

内存分配函数malloc kmalloc vmalloc

内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...

Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误

HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误,它们的含义、原因和解决方法都有显著区别。以下是详细对比: 1. HTTP 406 (Not Acceptable) 含义: 客户端请求的内容类型与服务器支持的内容类型不匹…...

微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】

微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来,Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...

学校招生小程序源码介绍

基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码,专为学校招生场景量身打造,功能实用且操作便捷。 从技术架构来看,ThinkPHP提供稳定可靠的后台服务,FastAdmin加速开发流程,UniApp则保障小程序在多端有良好的兼…...

【配置 YOLOX 用于按目录分类的图片数据集】

现在的图标点选越来越多,如何一步解决,采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集(每个目录代表一个类别,目录下是该类别的所有图片),你需要进行以下配置步骤&#x…...

推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)

推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...

嵌入式常见 CPU 架构

架构类型架构厂商芯片厂商典型芯片特点与应用场景PICRISC (8/16 位)MicrochipMicrochipPIC16F877A、PIC18F4550简化指令集,单周期执行;低功耗、CIP 独立外设;用于家电、小电机控制、安防面板等嵌入式场景8051CISC (8 位)Intel(原始…...