Python SQLAlchemy入门教程(基本用法)

下面我将分步骤详细讲解 Python SQLAlchemy 入门教程的完整攻略。

1. 前言

Python SQLAlchemy 是 Python中一款优秀的 ORM 框架,它可以将关系数据库中的表结构映射到 Python 对象上,并支持使用对象操作数据库。

2. 准备工作

在开始之前,我们需要准备一些工作:

  • 安装必要的依赖,包括 SQLAlchemy 和 pymysql。
  • 安装 MySQL 数据库并启动 MySQL 服务。

安装方式如下:

pip install sqlalchemy pymysql
sudo apt-get install mysql-server

3. 建立数据库连接

在建立数据库连接之前,我们需要定义一些与数据库相关的参数,如数据库名称、账号、密码等。在本示例中,我们使用 MySQL 作为示例数据库,并使用 root 用户访问数据库。

from sqlalchemy import create_engine

DB_NAME = 'test_db'
DB_USER = 'root'
DB_PASSWORD = 'password'
DB_HOST = 'localhost'
DB_PORT = '3306'

engine = create_engine(f'mysql+pymysql://{DB_USER}:{DB_PASSWORD}@{DB_HOST}:{DB_PORT}/{DB_NAME}', echo=True)

注意:在这里我们使用了 f-string 来动态构建和数据库相关的连接字符串

4. 建立数据模型

在 SQLAlchemy 中,数据模型通常由 Python 类来表示,每个类代表数据库中的一个表,类属性则代表表中的字段。在本示例中,我们定义一个 User 类,并将其映射到数据库的 user 表中。

from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String

Base = declarative_base()


class User(Base):
    __tablename__ = 'user'

    id = Column(Integer, primary_key=True)
    name = Column(String(50), nullable=False)
    age = Column(Integer, nullable=False)

注意:定义的类中必须要包含 tablename 属性,该属性用于指定将该类映射到数据库中的哪个表中。

5. 创建表结构

在映射定义好的数据模型之后,我们需要创建对应的数据库表结构。可以使用 SQLAlchemy 中 Base 类的 metadata 属性创建表结构。

Base.metadata.create_all(engine)

6. 插入数据

在创建好表结构之后,我们就可以使用 Python 中的对象操作数据库了。我们可以通过定义类对象的方式,向数据库中插入一条记录。

from sqlalchemy.orm import sessionmaker

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

user = User(name='Lucy', age=18)

session.add(user)
session.commit()

# 打印插入的数据信息
print(user.id, user.name, user.age)

7. 查询数据

在插入了一条记录之后,我们可以通过 SQLAlchemy 提供的 API,从数据库中查询记录。我们使用 .query() 方法来创建一个查询对象,该对象可以调用 SQLAlchemy 中提供的各种查询 API,如 filter、limit 等。

# 查询所有数据
users = session.query(User).all()

for u in users:
    print(u.id, u.name, u.age)

# 根据条件查询数据
user = session.query(User).filter_by(name='Lucy').first()

if user:
    print(user.id, user.name, user.age)
else:
    print('无记录')

总结

至此,我们已经成功完成了一个基本的使用 Python SQLAlchemy 操作 MySQL 数据库的示例。在实际项目中,我们可以通过 ORM 框架更加方便和高效地操作数据库,并且能够避免 SQL 注入等安全问题,提高应用程序的安全性。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python SQLAlchemy入门教程(基本用法) - Python技术站

(0)
上一篇 2023年6月3日
下一篇 2023年6月3日

相关文章

  • 8行代码实现Python文件去重

    下面我会详细讲解“8行代码实现Python文件去重”的完整攻略。这个过程中包含以下步骤: 安装Python所需依赖库 创建去重脚本 运行脚本进行去重 1. 安装Python所需依赖库 在开始使用Python进行文件去重之前,我们需要安装一个名叫pandas的Python依赖库。可以使用以下命令进行安装: pip install pandas 这个命令将会在你…

    python 2023年6月5日
    00
  • Python中的模块是什么?如何导入和使用模块?

    Python模块是什么? Python模块是一个包含了定义变量、函数、类等的可重用代码的文件,它允许我们在一个程序中分解代码成多个代码块。模块使得我们的代码更加的清晰、组织好,同时也方便其他开发者阅读和使用我们的代码。 Python中有两种类型的模块——内置模块和外部模块。内置模块是Python自带的,可以直接使用。外部模块则需要通过pip等包管理工具进行安…

    python 2023年4月19日
    00
  • pytorch 梯度NAN异常值的解决方案

    当在PyTorch中训练模型时,有时会遇到梯度NAN异常值的问题,这通常是由于梯度爆炸或梯度消失导致的。本文将介绍PyTorch中解决梯度NAN异常值的几种方法,并提供详细的实操攻略。 方法一:梯度裁剪 梯度裁剪是一种常用的解决梯度爆炸问题的方法。在PyTorch中,我们可以使用torch.clip_grad_norm_()函数来实现梯度裁剪。下面是一个示例…

    python 2023年5月13日
    00
  • 浅析python中的set类型

    浅析 Python 中的 Set 类型 Set 是 Python 集合类型的一种,与 List 和 Tuple 一样,也是存储一组元素的数据类型。但 Set 和 List/Tuple 的最大区别在于,Set 中的元素不允许重复。如果你需要一个存储不重复元素的数据容器,那么 Set 就是一个非常好的选择。 Set 的定义 创建 Set 的方法有两个。一个是使用…

    python 2023年5月13日
    00
  • python3正则模块re的使用方法详解

    Python3正则模块re的使用方法详解 正则表达式是一种强大的工具,可以用于匹配、查找和替换文本中的模式。在Python中,re模块提供一系列函数来操作正则表达式。本攻略将详细讲解Python3中re模块的常用方法,包括search()、match()、findall()、sub等。 re模块常用方法 re模块供了一系列函数来操作正则表达式,包括: re.…

    python 2023年5月14日
    00
  • 利用python实现汉字转拼音的2种方法

    关于“利用Python实现汉字转拼音的2种方法”这个话题,以下是我准备的详细攻略。 1. 什么是汉字转拼音 汉字转拼音即将汉字转化为拼音。在很多应用场景下,我们需要将输入的汉字转换成对应的拼音,方便进行后续处理和分析。下面介绍两种常用的汉字转拼音方法。 2. 利用pypinyin实现汉字转拼音 pypinyin是一个简单易用的Python库,可以方便地将汉字…

    python 2023年5月20日
    00
  • 在python中利用opencv简单做图片比对的方法

    安装opencv 首先需要安装OpenCV,可以通过命令行或者Anaconda Prompt输入以下命令进行安装: pip install opencv-python 导入库 导入库OpenCV,并载入两张待比对的图片 import cv2 img1 = cv2.imread(‘image1.jpg’) img2 = cv2.imread(‘image2.j…

    python 2023年5月18日
    00
  • Python编程中NotImplementedError的使用方法

    Python编程中NotImplementedError的使用方法 在Python编程中,NotImplementedError是一个异常类,通常用于表示某个方法或函数的实现尚未完成。本文将详细讲解NotImplemented的使用方法,包括何时使用ImplementedError、如何使用NotImplementedError以及NotError的示例说明…

    python 2023年5月13日
    00
合作推广
合作推广
分享本页
返回顶部