当前位置: 首页 > news >正文

SQLAlchemy系列教程:SQLAlchemy快速入门示例项目

SQLAlchemy是与数据库交互的Python开发人员不可或缺的库。这个强大的ORM允许使用python结构进行简单的数据库操作。设置过程很简单,并且允许可扩展的数据库应用程序开发。本文通过入门项目完整介绍SQLAlchemy的应用过程,包括安装依赖包,创建连接和操作数据库等。

在这里插入图片描述

SQLAlchemy入门

首先,确保安装了最新版本的SQLAlchemy。如果你还没有安装,你可以使用pip安装它:

pip install SQLAlchemy

这将为当前的Python环境安装SQLAlchemy。安装完成后,您可以开始导入所需的类:

from sqlalchemy import create_engine, Column, Integer, String, ForeignKey
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker, relationship

创建数据库连接

创建一个引擎来管理到数据库的连接:

engine = create_engine('sqlite:///mydatabase.db')

提供给create_engine的URL是一个连接字符串。在本例中,我们使用SQLite,但SQLAlchemy支持许多不同的数据库。

定义模型

接下来,通过创建继承Base的类来定义你的模型:

Base = declarative_base()

class User(Base):
    __tablename__ = 'users'

    id = Column(Integer, primary_key=True)
    name = Column(String)
    fullname = Column(String)
    nickname = Column(String)

    def __repr__(self):
        return "<User(name='{}', fullname='{}', nickname='{}')>".format(
                self.name, self.fullname, self.nickname
            )

一旦你的模型被定义,在数据库中创建表:

Base.metadata.create_all(engine)

创建session

要与数据库交互,必须创建并使用会话:

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

这个会话将作为加载到数据库会话中的所有对象的暂存区。它也是查询数据库的地方。

CRUD操作

通过session,可以开始添加和查询记录:

new_user = User(name='john', fullname='John Doe', nickname='johnny')
session.add(new_user)
session.commit()

# Querying
user = session.query(User).filter_by(name='john').first()
print(user)

定义关系

要在表之间添加关系,需要使用relationship函数:

class Address(Base):
    __tablename__ = 'addresses'
    id = Column(Integer, primary_key=True)
    email_address = Column(String, nullable=False)
    user_id = Column(Integer, ForeignKey('users.id'))

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

User.addresses = relationship("Address", order_by=Address.id, back_populates="user")

这在用户和地址之间创建了双向关系。

高级用法

随着项目变得越来越复杂,可能需要对会话和事务进行更细致的控制。我们可以使用上下文管理器或显式事务处理来提供更细粒度的方法。

with session.begin() as transaction:
    try:
        session.add(new_user)
        transaction.commit()
    except Exception:
        transaction.rollback()
        raise

这是处理事务的一种更安全的方法,可以确保会话被正确关闭,资源不会泄露。

使用Alembic进行迁移

对于数据库的持续开发和生产管理,可以集成Alembic来处理迁移。Alembic跟踪模型模式的更改,并允许你在不丢失数据的情况下将更改传播到生产数据库:

pip install alembic 
alembic init migrations

SQLite连接示例

from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()
# Define models

class User(Base):
    __tablename__ = 'users'
    id = Column(Integer, primary_key=True)
    name = Column(String)

engine = create_engine('sqlite:///example.db')
Session = sessionmaker(bind=engine)
session = Session()

# Your ORM operations here

session.close()

这里通过session操作数据库,事务被自动处理。但对于复杂业务,可以通过 connection = engine.connect() 语句获得连接,完全自主控制。

PostgreSQL连接示例

from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker

# Define the PostgreSQL URL
postgresql_url = 'postgresql://user:password@localhost:5432/mydatabase'

# Create an engine
engine = create_engine(postgresql_url)

# Configure Session class and bind it to the engine
Session = sessionmaker(bind=engine)

# Create a session
session = Session()

# Use the session...

# Close the session
session.close()

最后总结

SQLAlchemy简化了数据库交互,并为Python项目带来了ORM功能。通过本指南中详细介绍的适当设置,你将能够创建可伸缩、可维护且高效的数据库应用程序。

相关文章:

  • 曹操智行构建国内首个全域自研闭环智驾生态
  • 安装Oracle23ai的教程
  • c语言基础第14节《指针》
  • 深度学习五大模型:CNN、Transformer、BERT、RNN、GAN详细解析
  • tauri2+typescript+vue+vite+leaflet等的简单联合使用(一)
  • 链表的概念及功能实现
  • 【数字信号处理:从原理到应用的深度剖析】
  • Grafana服务安装并启动
  • C#内置委托(Action)(Func)
  • anaconda配置pytorch
  • 深度学习_第二轮
  • 数据结构——布隆过滤器
  • 天锐绿盾软件|外设管控具体有哪些措施?
  • 正交投影与内积空间:机器学习的几何基础
  • 考研复试问题总结-数据结构(1)
  • 把GB型材库放入solidwork中点击库无法应
  • HTTP与HTTPS:从原理到实践,深入解析Web通信的奥秘
  • 扬帆启航于数据结构算法之雅舟旅程,悠然漫步于C++秘境——Leetcode刷题之用栈实现队列,用队列实现栈
  • Vue3 + Vite + TS,使用 Pinia
  • 程序诗篇里的灵动笔触:指针绘就数据的梦幻蓝图(水文,勿三)
  • 阿里巴巴网站谁做的/b2b平台网站
  • 深圳做三网合一网站/公司培训
  • 网站 注册模块怎么做/怎么寻找网站关键词并优化
  • 自动发卡网站建设/免费自动推广手机软件
  • 自己做的网站加载慢的原因/关键词排名优化系统
  • 做装修的人到什么网站找工作/免费建站免费推广的网站