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

系列目录

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

SQL基础

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

基本概念和术语

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

常用SQL语句

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

sql 复制代码
CREATE DATABASE mydatabase;

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

sql 复制代码
CREATE TABLE users (
        id INTEGER PRIMARY KEY,
        name TEXT NOT NULL,
        email TEXT UNIQUE
    );

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

sql 复制代码
INSERT INTO users (name, email) VALUES ('Alice', 'alice@example.com');

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

sql 复制代码
SELECT * FROM users;

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

sql 复制代码
UPDATE users SET email = 'newalice@example.com' WHERE name = 'Alice';

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

sql 复制代码
DELETE FROM users WHERE name = 'Alice';

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

sql 复制代码
ALTER TABLE users ADD COLUMN age INTEGER;

**DROP TABLE:**删除表,例如:

sql 复制代码
DROP TABLE users;

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

SQLite使用

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

安装SQLite

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

python 复制代码
import sqlite3


print(sqlite3.sqlite_version)

创建数据库和表

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

python 复制代码
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()

插入数据

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

python 复制代码
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()

查询数据

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

python 复制代码
conn = sqlite3.connect('example.db')
cursor = conn.cursor()

cursor.execute('SELECT * FROM users')
rows = cursor.fetchall()

for row in rows:
    print(row)

conn.close()

更新和删除数据

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

python 复制代码
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:

bash 复制代码
pip install sqlalchemy

定义数据库和模型

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

python 复制代码
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)

创建会话

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

python 复制代码
Session = sessionmaker(bind=engine)
session = Session()

插入数据

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

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

查询数据

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

python 复制代码
users = session.query(User).all()

for user in users:
    print(user.name, user.email, user.age)

更新和删除数据

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

python 复制代码
# 更新数据
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开发​​​​​​​

相关推荐
马克Markorg7 小时前
常见的向量数据库和具有向量数据库能力的数据库
数据库
冷雨夜中漫步7 小时前
Python快速入门(6)——for/if/while语句
开发语言·经验分享·笔记·python
郝学胜-神的一滴8 小时前
深入解析Python字典的继承关系:从abc模块看设计之美
网络·数据结构·python·程序人生
百锦再8 小时前
Reactive编程入门:Project Reactor 深度指南
前端·javascript·python·react.js·django·前端框架·reactjs
m0_736919109 小时前
C++代码风格检查工具
开发语言·c++·算法
喵手9 小时前
Python爬虫实战:旅游数据采集实战 - 携程&去哪儿酒店机票价格监控完整方案(附CSV导出 + SQLite持久化存储)!
爬虫·python·爬虫实战·零基础python爬虫教学·采集结果csv导出·旅游数据采集·携程/去哪儿酒店机票价格监控
Coder_Boy_9 小时前
技术让开发更轻松的底层矛盾
java·大数据·数据库·人工智能·深度学习
2501_944934739 小时前
高职大数据技术专业,CDA和Python认证优先考哪个?
大数据·开发语言·python
helloworldandy10 小时前
使用Pandas进行数据分析:从数据清洗到可视化
jvm·数据库·python
黎雁·泠崖10 小时前
【魔法森林冒险】5/14 Allen类(三):任务进度与状态管理
java·开发语言