白骑士的Python教学高级篇 3.3 数据库编程

系列目录

上一篇:白骑士的Python教学高级篇 3.2 网络编程

SQL基础

        Structured Query Language (SQL) 是一种用于管理和操作关系型数据库的标准语言。SQL能够执行各种操作,如创建、读取、更新和删除数据库中的数据(即CRUD操作),以及管理数据库结构本身。理解SQL的基础对于进行数据库编程至关重要。关于SQL的详细教学可以跳转白骑士的SQL教学(敬请期待)。

基本概念和术语

  • 数据库:存储有组织的数据的容器。
  • 表:数据库中的一个结构化数据集合,由行和列组成。
  • 行:表中的一条记录。
  • 列:表中的一个字段。
  • 主键:表中唯一标识每一行的列或列组合。
  • 外键:用于在两张表之间建立连接的列。

常用SQL语句

        CREATE DATABASE:创建一个新的数据库,例如:

CREATE DATABASE mydatabase;

        CREATE TABLE:创建一个新的表,例如:

CREATE TABLE users (id INTEGER PRIMARY KEY,name TEXT NOT NULL,email TEXT UNIQUE);

        INSERT INTO:向表中插入数据,例如:

INSERT INTO users (name, email) VALUES ('Alice', 'alice@example.com');

        SELECT:从表中查询数据,例如:

SELECT * FROM users;

        UPDATE:更新表中的数据,例如

UPDATE users SET email = 'newalice@example.com' WHERE name = 'Alice';

        DELETE:从表中删除数据,例如:

DELETE FROM users WHERE name = 'Alice';

        ALTER TABLE:修改表结构,例如:

ALTER TABLE users ADD COLUMN age INTEGER;

        DROP TABLE:删除表,例如:

DROP TABLE users;

        理解这些基本SQL语句是进行数据库编程的第一步。接下来,将学习如何使用SQLite和SQLAlchemy来进行数据库编程。

SQLite使用

        SQLite是一种轻量级的嵌入式关系数据库管理系统,它是一个在应用程序中使用的库,而不是独立的服务器进程。SQLite非常适合用作开发和测试环境下的小型数据库。

安装SQLite

        SQLite通常已经预装在Python标准库中。你可以通过以下命令检查:

import sqlite3print(sqlite3.sqlite_version)

创建数据库和表

        使用SQLite创建一个新的数据库和表非常简单。以下是一个示例代码:

import sqlite3# 创建一个连接对象
conn = sqlite3.connect('example.db')# 创建一个游标对象
cursor = conn.cursor()# 创建表
cursor.execute('''
CREATE TABLE users (id INTEGER PRIMARY KEY AUTOINCREMENT,name TEXT NOT NULL,email TEXT NOT NULL UNIQUE,age INTEGER
)
''')# 提交事务
conn.commit()# 关闭连接
conn.close()

插入数据

        向表中插入数据同样很简单,例如:

conn = sqlite3.connect('example.db')
cursor = conn.cursor()# 插入数据
cursor.execute('''
INSERT INTO users (name, email, age) VALUES ('Alice', 'alice@example.com', 30)
''')conn.commit()
conn.close()

查询数据

        查询数据并显示结果,例如:

conn = sqlite3.connect('example.db')
cursor = conn.cursor()cursor.execute('SELECT * FROM users')
rows = cursor.fetchall()for row in rows:print(row)conn.close()

更新和删除数据

        更新和删除数据的操作,例如:

conn = sqlite3.connect('example.db')
cursor = conn.cursor()# 更新数据
cursor.execute('''
UPDATE users SET age = 31 WHERE name = 'Alice'
''')# 删除数据
cursor.execute('''
DELETE FROM users WHERE name = 'Alice'
''')conn.commit()
conn.close()

        使用SQLite进行数据库编程非常直接,适合初学者理解和使用。接下来,将介绍使用SQLAlchemy进行ORM(对象关系映射)操作。

使用SQLAlchemy进行ORM操作

        SQLAlchemy是Python的一个SQL工具包和对象关系映射(ORM)库,提供了数据库的高级抽象,简化了数据库操作。

安装SQLAlchemy

        首先,通过pip安装SQLAlchemy:

pip install sqlalchemy

定义数据库和模型

        使用SQLAlchemy定义数据库和模型类,例如

from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker# 创建引擎
engine = create_engine('sqlite:///example.db', echo=True)# 创建基类
Base = declarative_base()# 定义模型类
class User(Base):__tablename__ = 'users'id = Column(Integer, primary_key=True, autoincrement=True)name = Column(String, nullable=False)email = Column(String, unique=True, nullable=False)age = Column(Integer)# 创建所有表
Base.metadata.create_all(engine)

创建会话

        创建会话用于与数据库交互,例如:

Session = sessionmaker(bind=engine)
session = Session()

插入数据

        使用模型类插入数据,例如:

new_user = User(name='Alice', email='alice@example.com', age=30)
session.add(new_user)
session.commit()

查询数据

        查询数据并显示结果,例如:

users = session.query(User).all()for user in users:print(user.name, user.email, user.age)

更新和删除数据

        更新和删除数据的操作,例如:

# 更新数据
user = session.query(User).filter_by(name='Alice').first()
user.age = 31
session.commit()# 删除数据
session.delete(user)
session.commit()

使用ORM的优势

  • 更高的抽象层:ORM将数据库表映射为Python类,使得开发者可以以面向对象的方式操作数据库。
  • 简化数据库操作:通过模型类和会话,ORM大大简化了数据库的CRUD操作。
  • 数据库无关性:ORM使得应用程序能够更容易地切换底层数据库,而无需修改大量代码。

总结

        通过SQLite和SQLAlchemy,可以方便地进行数据库编程,利用SQL直接操作数据库或通过ORM进行高层次的抽象操作。无论是简单的数据库操作还是复杂的数据库应用,这些工具和技术都能帮助开发者高效地完成任务。希望通过本篇内容,能更好地理解和应用数据库编程,为自己的项目增添更多的功能和灵活性。

下一篇:白骑士的Python教学高级篇 3.4 Web开发​​​​​​​

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

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

相关文章

前端开发中的常见问题及解决方法

前端开发是一个充满挑战和乐趣的领域。然而,在开发过程中,开发者常常会遇到各种各样的问题。本文将介绍一些前端开发中常用或者经常遇到的问题,并提供相应的解决方法,帮助你提高开发效率和解决问题的能力。 一. 页面布局问题 问题…

【启明智显技术分享】SSD202D核心板方案双网口SBC2D06开发板开箱与实操全攻略上手指南

一、背景 本指南将详细介绍启明智显基于SSD202D核心板方案下的双网口-SBC2D06的开箱及实操上手应用。无论您是电子爱好者、开发者还是工程师,这份指南都能助您快速上手并充分利用这款双网口开发板的各项功能。 二、硬件介绍 SBC2D06双网口开发板,作为…

大数据面试题之Flink(2)

Flink中Checkpoint超时原因 Flink的ExactlyOnce语义怎么保证? Flink的端到端ExactlyOnce Flink的水印(Watermark),有哪几种? Flink的时间语义 Flink相比于其它流式处理框架的优点? Flink和Spark的区别?什么情况下使用Flink?有什么优点? Flink b…

Flink实现准确和高效流处理的关键问题

时间相关: Watermark 水位线 水位线是插入到数据流中的一个标记,可以认为是一个特殊的数据。水位线主要的内容是一个时间戳,用来表示当前事件时间的进展。水位线是基于数据的时间戳生成的。水位线的时间戳必须单调递增,以确保任务的事件时间时钟一直向前推进,进展。水位线…

香橙派OrangePi AIpro初体验:当小白拿到一块开发板第一时间会做什么?

文章目录 香橙派OrangePi AIpro初体验:当小白拿到一块高性能AI开发板第一时间会做什么前言一、香橙派OrangePi AIpro概述1.简介2.引脚图开箱图片 二、使用体验1.基础操作2.软件工具分析 三、香橙派OrangePi AIpro.测试Demo1.测试Demo1:录音和播音(USB接口…

渲染100农场如何渲染全景图?渲染100邀请码1a12

全景图的制作需要渲染,以国内知名的渲染农场—渲染100为例,我来说下操作过程。 1、进入渲染100官网,点击右上角注册按钮完成注册,记得邀请码一栏填1a12,有30元礼包和2张免费渲染券。 渲染100官网:http://…

构建LangChain应用程序的示例代码:50、如何在检索-生成 (RAG) 应用中利用多模态大型语言模型 (LLM) 处理包含文本和图像的混合文档的示例

多模态 RAG 许多文档包含多种内容类型,包括文本和图像。 然而,大多数 RAG 应用中,图像中捕获的信息往往被忽略。 随着多模态 LLM 的出现,如 GPT-4V,值得考虑如何在 RAG 中利用图像: 选项 1:…

【实战】EasyExcel实现百万级数据导入导出

文章目录 前言技术积累实战演示实现思路模拟代码测试结果 前言 最近接到一个百万级excel数据导入导出的需求,大概就是我们在进行公众号API群发的时候,需要支持500w以上的openid进行群发,并且可以提供发送openid数据的导出功能。可能有的同学…

Android项目框架

Android项目基于Android Studio开发,Android Studio使用Gradle作为项目构建工具。新建工程后可以看到如图所示目录结构,将Android切成Project可以看到完整的Android工程目录结构,如图所示。 图1-2 Android项目目录结构 app目录是一个典型的…

Profibus转Modbus网关在智能化水处理系统优化改造的应用

一、背景 在现代水处理行业中,智能化系统的应用已经成为提高效率和降低成本的关键。特别是在水厂中,罐内压载水处理系统的自动化和监控对于保障水质安全至关重要。而在这一过程中需要将水泵、阀门、传感器等设备连接到中控系统上。 二、方案 在控制器与…

计算机专业课面试常见问题-编程语言篇

目录 1. 程序的编译执行流程? 2. C浅拷贝和深拷贝的区别? 3. C虚函数? …

教你点出现安装错误 - 0x80070643的修复方法

错误代码 0x80070643 通常与 Windows 更新失败有关,但也可能出现在安装其他 Microsoft 软件(例如 Microsoft Office 或 Microsoft .NET Framework)时。这个错误可能由多种原因造成,比如权限问题、系统文件损坏、以前安装的残留或防…

thinksboard新建table表格

html文件 <div fxFlex fxLayoutAlign"left top" style"display: block"> <!-- <mat-card appearance"raised" style"max-height: 80vh; overflow-y: auto;">--><div><button mat-raised-button (click)&…

MySQL——Where子句之逻辑运算符

where条件子句 作用&#xff1a;检索数据中符合条件的值 搜索的条件由一个或多个表达式组成&#xff01;返回的结果为布尔值 逻辑运算符 运算符语法描述and &&a and b 或 a && b逻辑与&#xff0c;两个为真&#xff0c;结果为真or ||a or b 或 a || b逻辑或…

6个操作简单又好用的实用办公工具

分享6个操作简单又好用的实用办公工具&#xff0c;手机和电脑上的都有&#xff0c;好好使用可以让工作效率翻倍&#xff01; 1.方方格子 一个大型的的【Excel工具箱】&#xff0c;支持32位和64位Office&#xff0c;可直接作为插件使用&#xff0c;功能覆盖非常全面&#xff0c…

Jmeter 入门指南:从零开始学习

JMeter 是一个非常流行的开源工具&#xff0c;用于进行负载测试。它支持多种网络协议&#xff0c;包括 HTTP、FTP、SMTP、JMS、SOAP、JDBC 等&#xff0c;使其成为在多种应用环境中检测性能瓶颈的理想选择。本文将详细介绍如何利用 JMeter 进行高效的接口自动化测试。 创建和执…

黄金小程序开发的市场分析

在当今数字化时代&#xff0c;互联网技术与传统行业的深度融合正催生出一系列新兴商业模式和市场机遇。黄金行业&#xff0c;作为传统贵金属市场的代表&#xff0c;也在这场变革中迎来了新的发展机遇。黄金小程序的开发&#xff0c;正是这一趋势下的重要产物&#xff0c;它不仅…

Wireshark抓包工具使用

Wireshark抓包工具使用 1. Wireshark工具下载2. Wireshark工具基本配置3. Wireshark过滤语法3.1. 根据源IP过滤3.2. 针对特定的域名进行包过滤3.3. 针对特定的图片格式进行包过滤3.4. 针对特定的Host字段进行过滤4. Wireshark抓包文件保存1. Wireshark工具下载 Windows系统下载…

echarts用pictorialBar实现3D柱状图

先看下效果 实现思路 描绘一个普通的柱状图通过象形柱图&#xff08;pictorialBar&#xff09;在柱状图的顶部添加一个图形类型&#xff08;symbol&#xff09;菱形 代码实现 <template><div id"symbolBar"></div> </template> <scrip…

chunk-vendors.js 优化

问题背景 在 App.vue 加入 web-vitals 性能监控指标并打印 import {onLCP, onINP, onCLS, onTTFB} from web-vitals/attribution;// Measure and log LCP as soon as its available. onLCP(console.log); onINP(console.log); onCLS(console.log); onTTFB(console.log);网页的…