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

server/2024/12/27 20:38:14/

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 数据库
python">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 数据库
python">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 数据库
python">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 数据库,并进行基本的增删改查操作。

python">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对数据库进行基本的操作了,如果想要精进,还要多多实践。

http://www.ppmy.cn/server/153718.html

相关文章

Stealthy Attack on Large Language Model based Recommendation

传统RS依赖id信息进行推荐,攻击:生成虚假用户,这些用户对特定目标物体给于高评价,从而影响模型的训练。 基于llm的RS:llm利用语义理解,将用户兴趣转化为语义向量,通过计算用户兴趣向量与物品向…

fastadmin 框架 生成qr code 二维码图片,PHP 7.4版本

注意: 1、不同版本,安装qr code 用法不同。PHP8.0以上用qr code 4.0版本, PHP7.4用 qr code3.0版本 2、项目根目录安装: //安装3.0版本 composer require endroid/qr-code:^3.0//检查安装版本 composer show endroid/qr-code 选…

游戏引擎学习第59天

回顾并计划接下来的一天 在处理实体的空间划分时,遇到了一些问题。例如,虽然树和玩家应该在某些情况下被排除在外,但目前的系统仍然会出现不合逻辑的渲染结果,这在视觉上并不符合预期。尽管这些问题主要是渲染上的,并…

【网络安全零基础入门】PHP环境搭建、安装Apache、安装与配置MySQL(非常详细)零基础入门到精通,收藏这一篇就够(01)_php安装配置教程

这是大白给粉丝朋友准备的网络安全零基础入门第八章PHP入门的知识章节里的环境搭建。 喜欢的朋友们,记得给大白点赞支持和收藏一下,关注我,学习黑客技术。 一、php简介 php定义:一种服务器端的 HTML脚本/编程语言,是…

店铺营业状态设置

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

HarmonyOS NEXT 实战之元服务:静态案例效果---查看国内航班服务

背景: 前几篇学习了元服务,后面几期就让我们开发简单的元服务吧,里面丰富的内容大家自己加,本期案例 仅供参考 先上本期效果图 ,里面图片自行替换 效果图1完整代码案例如下: Index代码 import { authen…

桥接模式(Bridge Pattern)

桥接模式(Bridge Pattern)是一种结构型设计模式,用于将抽象部分与实现部分分离,使它们可以独立变化。它的核心思想是通过引入一个“桥”类,将抽象层与实现层解耦。 桥接模式的结构 Abstraction(抽象部分&am…

Golang中的Map是怎么遍历的

在 Golang 中,遍历 map 的常见方法是使用 for...range 循环。map 是无序的键值对集合,因此遍历 map 时,每次迭代访问的键值对顺序可能不同。 以下是一个遍历 map 的示例: package mainimport "fmt"func main() {// 创…