Python与SQLAlchemy:轻松管理数据库

news2024/11/28 14:38:10

在这篇文章中,我们将学习如何使用Python和SQLAlchemy库来轻松管理数据库。SQLAlchemy是一个强大的ORM(对象关系映射)库,它允许您通过Python代码与关系型数据库进行交互,而无需编写SQL语句。

一、安装SQLAlchemy

首先,确保您已经安装了Python。然后,使用以下命令安装SQLAlchemy库:

pip install sqlalchemy

二、创建数据模型

在开始使用SQLAlchemy之前,我们需要创建一个数据模型来表示我们的数据。例如,假设我们有一个简单的应用程序,需要存储用户信息。我们可以创建一个User类来表示用户数据:

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

Base = declarative_base()

class User(Base):
    __tablename__ = 'users'

    id = Column(Integer, primary_key=True)
    name = Column(String)
    age = Column(Integer)
    email = Column(String)

这里,我们首先从SQLAlchemy中导入所需的类和函数,然后创建一个User类,它继承自Base。我们定义了一个表名users,以及表示用户数据的列。

三、设置数据库连接

接下来,我们需要设置一个数据库连接。在这个例子中,我们将使用SQLite数据库,但SQLAlchemy支持多种数据库系统。创建一个名为database.py的文件,并添加以下代码来设置数据库连接:

from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker

from model import Base, User

DATABASE_URL = 'sqlite:///users.db'

engine = create_engine(DATABASE_URL)
Base.metadata.create_all(engine)

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

这里,我们导入了之前创建的User类以及一些其他SQLAlchemy组件。我们指定了一个SQLite数据库文件users.db,然后创建了一个连接引擎。我们还创建了一个Session类,用于与数据库进行交互。

四、CRUD操作

现在我们已经设置好了数据库连接,我们可以执行一些基本的CRUD操作。以下是一些示例:

  • 创建(Create)

    要添加新用户,我们可以创建一个新的User对象,然后将其添加到会话中:

    new_user = User(name='John Doe', age=30, email='john.doe@example.com')
    session.add(new_user)
    session.commit()
    
    
  • 读取(Read)

    若要从数据库中查询用户,我们可以使用session.query()方法:

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

    若要更新现有用户的信息,我们可以查询用户,修改属性,然后提交更改:

    user = session.query(User).filter(User.email == 'john.doe@example.com').first()
    if user:
        user.age = 31
        session.commit()
    
    
  • 删除(Delete)

    若要从数据库中删除用户,我们可以查询用户,然后将其从会话中删除:

    user = session.query(User).filter(User.email == 'john.doe@example.com').first()
    if user:
        session.delete(user)
        session.commit()
    
    

五、关联和外键

SQLAlchemy还支持表之间的关联和外键。例如,假设我们的应用程序还需要存储订单信息。我们可以创建一个Order类,并将其与User类关联:

from sqlalchemy import ForeignKey
from sqlalchemy.orm import relationship

class Order(Base):
    __tablename__ = 'orders'

    id = Column(Integer, primary_key=True)
    user_id = Column(Integer, ForeignKey('users.id'))
    product_name = Column(String)
    price = Column(Integer)

    user = relationship("User", back_populates="orders")

User.orders = relationship("Order", back_populates="user")

这里,我们创建了一个新的Order类,并定义了一个外键user_id,它引用了users表的id列。我们还定义了一个user关系,用于访问与订单关联的用户。在User类中,我们添加了一个orders关系,用于访问与用户关联的所有订单。

现在,我们可以轻松地查询和管理用户及其订单:

# 创建一个新订单
order = Order(product_name='Laptop', price=1000, user=user)
session.add(order)
session.commit()

# 查询用户的所有订单
orders = session.query(Order).filter(Order.user_id == user.id).all()
for order in orders:
    print(order.product_name, order.price)

# 查询与订单关联的用户
order_user = session.query(User).filter(User.id == order.user_id).first()
print(order_user.name)

通过使用SQLAlchemy,我们可以轻松地管理和查询数据库,而无需编写SQL语句。它为许多不同的数据库系统提供了统一的API,并具有许多其他高级功能,如事务和连接池。了解更多关于SQLAlchemy的信息,请查看官方文档。

如果你对Python感兴趣,想要学习python,这里给大家分享一份Python全套学习资料,都是我自己学习时整理的,希望可以帮到你,一起加油!

😝有需要的小伙伴,可以V扫描下方二维码免费领取🆓

1️⃣零基础入门

① 学习路线

对于从来没有接触过Python的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
在这里插入图片描述

② 路线对应学习视频

还有很多适合0基础入门的学习视频,有了这些视频,轻轻松松上手Python~
在这里插入图片描述

③练习题

每节视频课后,都有对应的练习题哦,可以检验学习成果哈哈!
在这里插入图片描述

2️⃣国内外Python书籍、文档

① 文档和书籍资料

在这里插入图片描述

3️⃣Python工具包+项目源码合集

①Python工具包

学习Python常用的开发软件都在这里了!每个都有详细的安装教程,保证你可以安装成功哦!
在这里插入图片描述

②Python实战案例

光学理论是没用的,要学会跟着一起敲代码,动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。100+实战案例源码等你来拿!
在这里插入图片描述

③Python小游戏源码

如果觉得上面的实战案例有点枯燥,可以试试自己用Python编写小游戏,让你的学习过程中增添一点趣味!
在这里插入图片描述

4️⃣Python面试题

我们学会了Python之后,有了技能就可以出去找工作啦!下面这些面试题是都来自阿里、腾讯、字节等一线互联网大厂,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
在这里插入图片描述
在这里插入图片描述

上述所有资料 ⚡️ ,朋友们如果有需要的,可以扫描下方👇👇👇二维码免费领取🆓

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

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

相关文章

Android studio 中英文转换

一、确认版本号 需要确认android studio软件版本,根据版本下载对应的中文汉化包,如果安装的汉化包版本不对应,可能会导致安装失败。 面板选择Help→About,在弹出框中查看当前版本号,我们只需要关心版本号前面的222即可…

智慧图书管理系统架构设计与实现

随着数字化时代的到来,智慧图书管理系统在图书馆和机构中扮演着重要的角色。一个优秀的图书管理系统不仅需要满足基本的借阅管理需求,还需要具备高效的性能、良好的扩展性和稳定的安全性。本文将讨论智慧图书管理系统的架构设计与实现,以满足…

在 Python 中,通过列表字典创建 DataFrame 时,若字典的 key 的顺序不一样以及部分字典缺失某些键,pandas 将如何处理?

🍉 CSDN 叶庭云:https://yetingyun.blog.csdn.net/ pandas 是一个快速、强大、灵活且易于使用的开源数据分析和处理工具,它是建立在 Python 编程语言之上的。 pandas 官方文档地址:https://pandas.pydata.org/ 在 Python 中&…

第九篇:node静态文件服务(中间件)

🎬 江城开朗的豌豆:个人主页 🔥 个人专栏 :《 VUE 》 《 javaScript 》 📝 个人网站 :《 江城开朗的豌豆🫛 》 ⛺️ 生活的理想,就是为了理想的生活 ! 📘 引言: 当今互联网时代&am…

IDEA实现序列化时如何自动生成serialVersionUID

实现步骤:1.安装GenerateSerialVersionUID插件 2.点击idea左上角File -> Settings -> Editor -> Inspections -> 搜索 Serialization issues ,找到 Serializable class without ‘serialVersionUID’ ->打上勾,再点击Apply-&…

《剑指 Offer》专项突破版 - 面试题 49、50 和 51 : 详解与二叉树中路径相关的面试题(C++ 实现)

目录 面试题 49 : 从根节点到叶节点的路径数字之和 面试题 50 : 向下的路径节点值之和 面试题 51 : 节点值之和最大的路径 面试题 49 : 从根节点到叶节点的路径数字之和 题目: 在一棵二叉树中所有节点都在 0~9 的范围之内,从根节点到叶节点的路径表…

5G车载路由器引领无人驾驶车联网应用

随着无人驾驶技术的不断发展,车联网正逐渐成为实现智能交通的重要组成部分。5G车载路由器将在车联网的应用中起到至关重要的作用,它能够满足无人驾驶应用的低时延、高速率和实时控制等需求,进一步推动无人驾驶车联网技术。 5G路由器具备低时延…

ACK One:构建混合云同城容灾系统

作者:蔡靖 对于当前业务运行在 IDC 内的 Kubernetes 集群中,希望通过云计算为云下业务提供同城灾备的高可用冗余能力,可利用阿里云分布式云容器平台 ACK One [ 1] 来提供统一得流量、应用和集群管理,实现业务流量的多集群路由和灾…

Eclipse - Switch Workspace

Eclipse - Switch Workspace References Switch Workspace References [1] Yongqiang Cheng, https://yongqiang.blog.csdn.net/

解决Ubuntu下网络适配器桥接模式下ping网址不通的情况

问题反应:ping不通网址 打开虚拟机中的设置,更改网络适配器为NAT模式 确定保存更改之后,退出输入如下命令。 命令1: sudo /etc/network/inferfaces 命令2: sudo /etc/init.d/network/ restart

Poller模块与Channel模块整合

目录 概要 tcp_cli.cc tcp_srv.cc server.hpp 测试结果 gdb调试 概要 本主要是将以下模块进行整合测试 Buffer缓冲区类实现(模块一)-CSDN博客 Socket套接字类实现(模块二)-CSDN博客 Channel事件管理类实现(模块三)-CSDN博客 Poller描述符监控类实现(模块四)-CSDN博客 经…

guitar pro五线谱转六线谱 guitar pro怎么去掉五线谱 简谱是什么 新手学吉他

在音乐领域,五线谱和六线谱是两种常见的乐谱表示方法。五线谱通常用于表示管弦乐、钢琴和其他键盘类乐器的音乐,而六线谱则常用于表示吉他等弦乐器的音乐。Guitar Pro软件作为一款专业的吉他编奏软件,六线谱的音乐更适合在软件中编奏。因此&a…

揭秘:一行代码搞定.Net API高并发的烦恼

高并发下的接口请求重复提交问题 在.Net开发中,我们经常遇到用户疯狂点击同一按钮,或者服务响应慢时重复发送请求,导致数据重复添加或混乱。这不仅浪费资源,更会得到错误的业务结果。如何高效解决这一普遍问题呢? 常规…

AI算法初识之分类汇总

一、背景 AI算法的分类方式多种多样,可以根据不同的学习机制、功能用途以及模型结构进行划分。以下是一些主要的分类方式及相应的代表性算法: 1. 按照学习类型 - **监督学习**: - 线性回归(Linear Regression) …

轨道交通信号增强与覆盖解决方案——经济高效,灵活应用于各类轨道交通场景!

方案背景 我国是世界上轨道交通里程最长的国家,轨道交通也为我们的日常出行带来极大的便利。伴随着无线通信技术的快速发展将我们带入电子时代,出行的过程中对无线通信的依赖程度越来越高,无论是车站还是车内都需要强大、高质量的解决方案以…

【NextJS】nextjs+qiankun遇ReferenceError: window is not defined

实验环境: qiankun: ^2.10.16next: 14.1.0react: ^18.2.0 根据官方手册快速上手教程(链接) 构建主程序实验代码: qiankun部分: // file: micro-base/plugins/qiankun/index.tsimport type { AppMetadata } from qiankun; import { registe…

vue+springboot登录与注册功能的实现

①首先写一个登录页面 <template> <div style"background-color: #42b983;display: flex;align-items: center;justify-content: center;height: 100vh"><div style"background-color: white;display: flex;width: 50%;height: 50%;overflow: h…

Camtasia Studio2024中文汉化版下载安装激活图文教程

Camtasia studio 2024是一款功能强大的屏幕录制和视频编辑软件。它可以帮助用户轻松地记录电脑屏幕上的任何操作&#xff0c;并可以将录制的视频进行编辑和制作成高质量的视频教程、演示文稿、培训课程等。 Camtasia studio 2024具有直观的界面和易于使用的工具&#xff0c;包…

软件实例分享,操作简单美发店会员登记记账本vip会员管理系统软件教程

软件实例分享&#xff0c;操作简单美发店会员登记记账本vip会员管理系统软件教程 一、前言 以下软件程序教程以 佳易王美发店会员管理系统软件V16为例说明 软件文件下载可以点击最下方官网卡片——软件下载——试用版软件下载 1、新会员可以直接使用手.机号&#xff0c;不需…

网络安全实验(三)

1.办公区设备可以通过电信和移动两条链路上网&#xff0c;且需要保留一个公网ip不能用来转换 2.分公司设备可以通过两条链路访问到dmz区域的http服务器 3.分公司内部客户端可以通过公网地址访问到内部服务器 4.FW1和FW3组成主备模式的双击热备 5.办公区上网用户限制流量不超…