【100天精通python】Day30:使用python操作数据库_数据库基础入门
专栏导读

专栏订阅地址:https://blog.csdn.net/qq_35831906/category_12375510.html

1 数据库基础知识介绍
1.1 什么是数据库?
数据库是一个结构化存储和组织数据的集合,它可以被有效地访问、管理和更新。数据库的目的是为了提供一种可靠的方式来存储和管理大量的数据,以便用户和应用程序可以方便地进行数据操作、查询和分析。
1.2 数据库管理系统(DBMS)
数据库管理系统(Database Management System,简称DBMS)是一个软件系统,它允许用户创建、访问和管理数据库。DBMS负责处理数据库的各种操作,如数据的存储、检索、更新和删除,同时也提供了一种安全的方式来管理数据的访问权限和完整性。DBMS还可以提供查询语言,允许用户使用特定的语法查询数据库中的数据。
一些常见的DBMS包括:
- MySQL
- PostgreSQL
- Oracle Database
- Microsoft SQL Server
- SQLite
1.3 关系型数据库和非关系型数据库
1.3.1 关系型数据库
关系型数据库(Relational Database)是一种以表格形式组织数据的数据库。它使用结构化查询语言(Structured Query Language,SQL)来管理和查询数据。关系型数据库中的数据以行和列的形式存储,每个表格(也称为关系)都具有固定的列和数据类型。
优点:
- 数据之间的关系明确,容易理解。
- 支持复杂的查询,例如多表连接。
- 具备数据一致性和完整性。
缺点:
- 不够适用于存储大量非结构化数据,如文本、图像等。
- 在大规模的数据集上可能性能较低。
常见的关系型数据库包括MySQL、PostgreSQL、Oracle等。
1.3.2 非关系型数据库
非关系型数据库(NoSQL Database)是一类不使用传统关系型表格结构来存储数据的数据库。它们适用于需要处理大规模非结构化数据或需要更高的可扩展性和灵活性的场景。
非关系型数据库分为多个子类,包括:
- 文档数据库(Document Database):以文档形式存储数据,如MongoDB。
- 列族数据库(Column-family Database):将数据存储为列族,如Apache Cassandra。
- 键值对数据库(Key-Value Store):将数据存储为键值对,如Redis。
- 图数据库(Graph Database):专门用于处理图结构数据,如Neo4j。
优点:
- 适用于非结构化、分布式、高并发等场景。
- 具备较高的可扩展性和性能。
缺点:
- 数据模型和查询语言通常比较特定,学习和使用成本较高。
- 不同类型的非关系型数据库之间差异较大,选择合适的数据库需要根据具体情况。
总结: 数据库是用于存储和管理数据的结构化集合,数据库管理系统(DBMS)是用于操作和管理数据库的软件系统。关系型数据库和非关系型数据库是两种不同类型的数据库模型,各自适用于不同的数据存储和处理需求。
2 python 中的数据库操作库介绍
Python中有多个数据库操作库可供选择,用于连接、操作和管理各种类型的数据库。以下是一些常见的Python数据库操作库的概述:
2.1 SQLite3
SQLite3是一个嵌入式关系型数据库引擎,无需独立的服务器即可使用。它是Python标准库的一部分,适用于小型项目和原型开发。
主要特点:
- 轻量级,无需额外配置。
- 存储在单个文件中,适用于单用户和小规模应用。
- 支持事务和多用户访问。
2.2 MySQL Connector/Python
MySQL Connector/Python是官方提供的用于连接MySQL数据库的库。它提供了高性能的连接和数据操作功能。
主要特点:
- 官方支持,提供广泛的功能和兼容性。
- 支持连接池、事务管理和批量操作。
- 适用于中小型应用和大规模项目。
2.3 psycopg2(用于连接PostgreSQL数据库)
Psycopg2是用于连接和操作PostgreSQL数据库的库。它提供了高度的性能和灵活性。
主要特点:
- 支持高级的PostgreSQL功能,如数据类型、查询优化等。
- 提供连接池、事务管理和异步查询支持。
- 适用于复杂的数据处理和大规模应用。
2.4 SQLAlchemy
SQLAlchemy是一个全功能的SQL工具包和对象关系映射(ORM)库,它允许你通过Python对象来操作数据库,抽象了底层的数据库细节。
主要特点:
- 支持多种数据库后端,包括SQLite、MySQL、PostgreSQL等。
- 提供ORM支持,允许使用Python对象来表示数据库表和关系。
- 支持灵活的查询、连接池和事务管理。
2.5 peewee
Peewee是一个简单、小巧的Python ORM库,适用于小型和中小型项目。
主要特点:
- 简洁易用,学习曲线较低。
- 支持SQLite、MySQL、PostgreSQL等多种数据库。
- 提供数据模型定义、查询、事务管理等功能。
2.6 SQLAlchemy core
除了ORM功能,SQLAlchemy还提供了"SQLAlchemy Core",这是一组用于执行SQL语句和管理数据库连接的工具。
主要特点:
- 提供底层的SQL表达和查询语言。
- 支持连接池、事务管理等。
- 适用于需要更精细控制数据库操作的场景。
这只是一些常见的Python数据库操作库的概述。选择适合你项目需求的库取决于项目的规模、性能要求和开发人员的熟悉程度。无论选择哪个库,了解其文档和示例是掌握数据库操作的关键。
3. Python中的数据库操作库流程
3.1 python操作数据库的通用流程

Python操作数据库的通用流程通常包括以下步骤:
导入数据库库:首先,你需要导入适用于所选数据库的库。不同的数据库类型需要不同的库,如SQLite、MySQL、PostgreSQL等。
建立数据库连接:使用库提供的方法建立与数据库的连接。这通常需要提供数据库的地址、用户名、密码和数据库名等信息。
创建游标对象:通过数据库连接,创建一个游标对象,它将用于执行SQL语句和处理查询结果。
执行SQL语句:使用游标对象执行各种SQL操作,如SELECT、INSERT、UPDATE、DELETE等。你可以在这里使用SQL查询语句,也可以使用库提供的方法进行数据操作。
处理查询结果:如果执行了SELECT查询,你可以使用游标对象来获取查询结果。结果通常以元组、列表、字典或自定义对象的形式返回。
提交事务(可选):如果进行了修改操作(INSERT、UPDATE、DELETE等),需要提交事务以保存更改。对于大多数库,修改操作默认是在事务中进行的,但你可以手动提交或回滚事务。
关闭游标和连接:在完成数据库操作后,务必关闭游标和连接,以释放资源并确保安全关闭连接。
3.2 示例
下面是一个通用的Python数据库操作流程,以SQLite3库示例:
import sqlite3# 1. 导入数据库库# 2. 建立数据库连接
conn = sqlite3.connect('mydatabase.db')# 3. 创建游标对象
cursor = conn.cursor()# 4. 执行SQL语句
cursor.execute("SELECT * FROM users")# 5. 处理查询结果
rows = cursor.fetchall()
for row in rows:print(row)# 6. 提交事务(如果有修改操作)
conn.commit()# 7. 关闭游标和连接
cursor.close()
conn.close()
这个通用流程在不同的数据库库中基本保持一致,只是具体的方法和用法可能会有些不同。在实际应用中,你可以根据选择的数据库库和项目需求,对流程进行适当的调整
4 python 常用数据库使用示例
4.1 SQLite3
SQLite3是一个嵌入式的轻量级关系型数据库引擎,适用于小型项目或原型开发。它是Python标准库的一部分,无需额外安装。
示例:
import sqlite3# 连接到SQLite数据库
conn = sqlite3.connect('mydatabase.db')
cursor = conn.cursor()# 创建表
cursor.execute('''CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT)''')# 插入数据
cursor.execute("INSERT INTO users (name) VALUES ('Alice')")
conn.commit()# 查询数据
cursor.execute("SELECT * FROM users")
rows = cursor.fetchall()
for row in rows:print(row)# 关闭连接
conn.close()
4.2 MySQL Connector/Python
MySQL Connector/Python是官方提供的用于连接MySQL数据库的库。
import mysql.connector# 连接到MySQL数据库
conn = mysql.connector.connect(host="localhost",user="username",password="password",database="mydatabase"
)
cursor = conn.cursor()# 执行SQL语句
cursor.execute("SELECT * FROM users")
rows = cursor.fetchall()
for row in rows:print(row)# 关闭连接
conn.close()
4.3 psycopg2(用于连接PostgreSQL数据库)
Psycopg2是用于连接和操作PostgreSQL数据库的库。
示例:
import psycopg2# 连接到PostgreSQL数据库
conn = psycopg2.connect(host="localhost",user="username",password="password",database="mydatabase"
)
cursor = conn.cursor()# 执行SQL语句
cursor.execute("SELECT * FROM employees")
rows = cursor.fetchall()
for row in rows:print(row)# 关闭连接
conn.close()
4.4 SQLAlchemy
SQLAlchemy是一个SQL工具包和对象关系映射(ORM)库,提供了更高层次的抽象来处理数据库操作。它支持多种数据库后端。
示例:
from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base# 创建数据库连接引擎
engine = create_engine('sqlite:///mydatabase.db', echo=True)
Base = declarative_base()# 定义数据模型
class User(Base):__tablename__ = 'users'id = Column(Integer, primary_key=True)name = Column(String)# 创建数据表
Base.metadata.create_all(engine)# 创建会话
Session = sessionmaker(bind=engine)
session = Session()# 插入数据
user = User(name='Alice')
session.add(user)
session.commit()# 查询数据
users = session.query(User).all()
for user in users:print(user.id, user.name)# 关闭会话
session.close()
下节介绍数据库连接配置。
相关文章:
【100天精通python】Day30:使用python操作数据库_数据库基础入门
专栏导读 专栏订阅地址:https://blog.csdn.net/qq_35831906/category_12375510.html 1 数据库基础知识介绍 1.1 什么是数据库? 数据库是一个结构化存储和组织数据的集合,它可以被有效地访问、管理和更新。数据库的目的是为了提供一种可靠的…...
android 如何分析应用的内存(十八)终章——使用Perfetto查看内存与调用栈之间的泄露
android 如何分析应用的内存(十八) 在前面两篇文章中,先是介绍了如何用AS查看Android的堆内存,然后介绍了使用MAT查看 Android的堆内存。AS能够满足基本的内存分析需求,但是无法进行多个堆的综合比较,因此…...
arcpy实现kml批量转出为shp 包括shp合并
参考文章 arcpy实现 kml批量转出为shp_kml批量合并转shp_A873054267的博客-CSDN博客 参考帮助是arcgis里边自带的KMLToLayer_conversion函数 应用场景: 两步路产生的多个轨迹文件KML,批量转换成arcgis 的gdb数据库 最后合并成一个shp 第一步&#…...
高等数学:泰勒公式
注:第三条 e x e^x ex的展开式,在 1 1 1和 1 2 x 2 \frac{1}{2}x^2 21x2之间添上一个 x x x。 1 1 − x ∑ n 0 ∞ x n 1 x x 2 x 3 ο ( x 3 ) , x ∈ ( − 1 , 1 ) . \begin{aligned}\frac{1}{1-x}\sum_{n0}^\infty x^n1xx^2x^3\omicron(x^…...
JZ32 从上往下打印二叉树(Java)
题目地址:从上往下打印二叉树_牛客题霸_牛客网 题目回顾: 不分行从上往下打印出二叉树的每个节点,同层节点从左至右打印。例如输入{8,6,10,#,#,2,1},如以下图中的示例二叉树,则依次打印8,6,10,2,1(空节点不打印&…...
hackNos靶机
靶机训练1 - hackNos: Os-hackNos 靶机平台 Vulnhub 是一个提供各种漏洞环境的靶场平台,供安全爱好者学习使用,大部分环境是做好的虚拟机镜像文件,镜像预先设计了多种漏洞,需要使用VMware或者VirtualBox运行。每个镜像会有破解的目…...
取地址及 const取地址操作符重载
取地址及 const取地址操作符重载 #include <iostream> using namespace std;class A { public:A(int year, int month, int day){_year year;_month month;_day day;}//它们是默认成员函数,我们不写编译器会自动生成,自动生成就够用了ÿ…...
【Linux初阶】进程间通信介绍 管道
🌟hello,各位读者大大们你们好呀🌟 🍭🍭系列专栏:【Linux初阶】 ✒️✒️本篇内容:进程间通信介绍,管道概述,匿名管道应用,命名管道应用 🚢&#…...
App 在macOS Catalina下提示已损坏无法打开解决办法:
App 在macOS Catalina下提示已损坏无法打开解决办法: 打开终端; 输入以下命令,回车; sudo xattr -d com.apple.quarantine /Applications/xxxx.app注意:/Applications/xxxx.app 换成你的App路径(推荐直接…...
ad+硬件每日学习十个知识点(26)23.8.6 (DCDC的降压电路、升压电路、降压-升压电路,同步整流,选型考虑同步、隔离)
文章目录 1.DCDC的降压原理2.DCDC的升压原理3.DCDC的升压和降压原理4.什么是肖特基二极管造成的死区电压?5.MOS管有死区电压么?6.DCDC的同步整流(用MOS管取代整流二极管,避免死区电压的影响)7.DCDC选型——同步与非同步…...
Elasticsearch3节点集群配置账号密码安全验证
Elasticsearch3节点集群配置账号密码安全验证 ES配置文件 rootnode1:~# grep -Ev "^#|^$" /etc/elasticsearch/elasticsearch.yml cluster.name: es-pre node.name: node1 node.master: true node.data: true path.data: /data/elk/es/data path.logs: /data/elk/…...
ffmepg滤镜
视频按顺时针方向旋转90度 ffplay -vf transpose1 -i juren-30s.mp4 ffplay -f lavfi -i testsrc -vf transpose1 -f lavfi -i testsrc这个滤镜是ffmpeg给用户的一个测试使用的视频 视频水平翻转(左右翻转) -vf hflip 实现慢速播放,声音速度是原始速度的50% ffpla…...
Linux 基础(六)常用命令 - find locate which whereis gzip gunzip tar
find & locate & which & whereis & gzip & gunzip & tar findlocatewhichwhereisgzipgunzipzip/unziptar find 在指定目录下查找文件或目录 find --help Usage: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...…...
【Ajax】回调地狱解决方法
回调地狱(Callback Hell)是指在异步编程中,特别是在嵌套的回调函数中,代码变得深度嵌套、难以阅读和维护的现象。这通常发生在处理多个异步操作时,每个操作都依赖于前一个操作的结果。回调地狱使代码变得难以理解、扩展…...
解决Vue根组件设置transition失效的问题
解决Vue根组件设置transition失效的问题 1.代码 <div id"app"><!-- :name"$route.meta.transitionName" --><transition :name"animation" mode"out-in"><router-view /></transition></div>&…...
【剑指 Offer 40】最小的k个数
题目: 输入整数数组 arr ,找出其中最小的 k 个数。例如,输入 4、5、1、6、2、7、3、8 这 8 个数字,则最小的 4 个数字是 1、2、3、4。 示例: 输入:arr [3,2,1], k 2 输出:[1,2] 或者 [2,1] …...
vue3+vite在main.ts文件中引入./App.vue报错(./App.vue不是模块)
问题 如下图: 方法一 下载TypeScript Vue Plugin (Volar)插件就不报红了,看它的描述应该就是ts文件可以识别vue文件。 方法二 在src文件夹下添加env.d.ts文件,添加以下代码: declare module *.vue {import type { DefineC…...
【LeetCode】102. 二叉树的层序遍历、107. 二叉树的层序遍历 II
作者:小卢 专栏:《Leetcode》 喜欢的话:世间因为少年的挺身而出,而更加瑰丽。 ——《人民日报》 102. 二叉树的层序遍历 102. 二叉树的层序遍历 给你二叉树的根节点 root ,返回其节…...
HTML详解连载(2)
HTML详解连载(2) 专栏链接 [link](http://t.csdn.cn/xF0H3)下面进行专栏介绍 开始喽超链接作用代码示例解释经验分享 音频标签代码示例注意强调 视频标签代码示例注意强调 列表作用:布局内容排列整齐的区域。分类:无序列表&#x…...
qt事件系统源码-----定时器
qt定时器的使用一般有以下几种方式: 1、直接使用QTimer对象,绑定定时器的timeout信号; 2、使用QTimer的静态方法singleshot方法,产生一个一次性的定时事件 3、在QObject子类中,调用startTimer方法,产生定…...
太阳能灌溉控制系统设计与低功耗优化实践
1. 项目概述:太阳能灌溉控制系统 这个项目源于一个非常具体的农场灌溉问题。在夏季干旱时期,农场使用一口浅井作为灌溉水源的储水容器。但由于井非常浅,加上农场主(也就是我的父母)有时会忘记关闭水泵,导致…...
Node.js + Angular + WebSocket:FUXA企业级工业可视化监控系统架构设计
Node.js Angular WebSocket:FUXA企业级工业可视化监控系统架构设计 【免费下载链接】FUXA Web-based Process Visualization (SCADA/HMI/Dashboard) software 项目地址: https://gitcode.com/gh_mirrors/fu/FUXA FUXA是一款基于Web的开源SCADA/HMI系统&…...
元宇宙压力测试:新职业需求分析报告
新大陆的守护者随着元宇宙从构想步入产业实践,一个融合虚拟现实、人工智能、区块链与物联网的沉浸式数字世界正在形成。这片“新大陆”并非仅仅提供娱乐与社交,更承载着日益复杂的经济活动与社会交互。其稳定运行不再只是一个技术问题,而是关…...
网页图片格式转换难题:如何3秒内解决格式不兼容问题?
网页图片格式转换难题:如何3秒内解决格式不兼容问题? 【免费下载链接】Save-Image-as-Type Save Image as Type is an chrome extension which add Save as PNG / JPG / WebP to the context menu of image. 项目地址: https://gitcode.com/gh_mirrors…...
Windows Android应用安装终极指南:告别模拟器的5个快速步骤
Windows Android应用安装终极指南:告别模拟器的5个快速步骤 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 你是否厌倦了在Windows上使用笨重的Android模拟…...
DC-DC电源PCB布局的“玄学”与科学:从电流环路到EMI优化的底层逻辑详解
DC-DC电源PCB布局的“玄学”与科学:从电流环路到EMI优化的底层逻辑详解 当你在深夜调试一块DC-DC电源板时,是否曾遇到过这样的场景:明明按照手册推荐布局,却依然被EMI问题困扰;或者某个关键节点的电压波形总是出现难以…...
别再用默认对齐了!C语言__attribute__((packed/aligned))实战避坑,手把手教你优化嵌入式内存布局
别再用默认对齐了!C语言__attribute__((packed/aligned))实战避坑指南 在嵌入式开发中,内存资源往往捉襟见肘。一个结构体多占几个字节,可能就意味着系统无法运行。但你是否知道,编译器默认的对齐规则可能正在悄悄浪费你宝贵的内存…...
2026 版 Java 面试指南汇总,涵盖 Java 所有核心技能
大家一睹 1000 道面试题的尊容内容涵盖:Java、MyBatis、ZooKeeper、Dubbo、Elasticsearch、Memcached、Redis、MySQL、Spring、Spring Boot、Spring Cloud、RabbitMQ、Kafka、Linux、并发编程等技术栈,一共 485 页,1000 多道题。注意…...
5 款 AI 写论文哪个好?2026 实测:真文献 + 实图表,虎贲等考 AI 成毕业论文首选
毕业季选 AI 写论文工具,最纠结的莫过于 “5 款 AI 写论文哪个好”—— 通用 AI 文献造假、轻量工具功能残缺、专项平台适配不足,能同时满足真实文献、可溯源数据、学术规范图表、全流程写作的工具少之又少。经过对 5 款主流 AI 论文工具的深度实测&…...
**发散创新:基于Flink实时流处理的电商订单异常检测系统设计与实践**在现代电商场景中
发散创新:基于Flink实时流处理的电商订单异常检测系统设计与实践 在现代电商场景中,订单数据的实时性与准确性直接决定了用户体验和业务决策效率。传统的批处理方式已无法满足“秒级响应”的需求,而Apache Flink作为新一代流式计算引擎&#…...

