如何在Python中使用SQLAlchemy ORM操作数据库?

如何在Python中使用SQLAlchemy ORM操作数据库?

SQLAlchemy是一个Python ORM(对象关系映射)库,它提供了一种简单的方式来操作关系型数据库。使用SQLAlchemy,我们可以使用Python代码来创建、读取、更新删除关系数据库中的数据。以下是如何在Python中使用SQLAlchemy ORM操作的完整使用攻略,包括连接数据库、创建表、插入数据、查询数据等步骤。同时,提供了两个示例以便更好理解如何在Python中使用SQLAlchemy ORM操作数据库。

步骤1:安装SQLAlchemy

在Python中,我们需要安装SQLAlchemy能使用它来操作关系型数据库。以下是安装SQLAlchemy的基本语法:

!pip install sqlalchemy

在上面的语法中,我们使用pip命令安装SQLAlchemy。

步骤2:连接数据库

在Python中,我们可以使用SQLAlchemy连接关系型数据库。以下是连接的基本法:

from sqlalchemy import create_engine

engine = create_engine('sqlite:///example.db', echo=True)

在上面的语法中,我们首先导入create_engine函数。然后,我们创建一个连接字符串,并使用create_engine函数创建一个连接对象。

步骤3:创建表

在SQLAlchemy中我们使用模型来表示关系型数据库中的表。以下是创建表的基本语法:

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

Base = declarative_base()

class Employee(Base):
    __tablename__ = 'employees'

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

在上面的语法中,我们首先导入declarative_base函数、Column类和IntegerString类。然后,我们使用declarative_base函数创建一个基对象。接着,我们使用Column类创建模型的字段。在字段中,我们可以设置字段的类型、长度、是否必须等属性。最后,我们使用__tablename__属性设置表名。

步骤4:插入数据

在Python,我们可以使用Alchemy插入数据到关系型数据库中。以下是插入数据的基本语法:

from sqlalchemy.orm import sessionmaker

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

employee = Employee(name='John', age=30)
session.add(employee)
session.commit()

在上面的语法中,我们首先导入sessionmaker函数。然后,我们使用sessionmaker函数创建一个Session类。接着,我们使用Session类创建一个session对象。然后,我们一个Employee对象,并设置nameage字段的值。然后,我们使用add方法将数据插入到关系型数据库中。最后,我们使用commit方法提交更改。

步骤5:查询数据

在Python中,我们可以使用SQLAlchemy查询关系型数据库中的数据。以下是查询数据的基本语法:

employees = session.query(Employee).all()

for employee in employees:
    print(employee.name, employee.age)

在上面的语法中,我们使用query方法查询Employee表中的所有数据。然后,我们使用for循环遍历所有数据,并打印出每个员工的姓名和年龄。

示例

在这个示例中,我们使用SQLAlchemy连接SQLite数据库,并创建一个Employee表。然后,我们插入一条数据到Employee表中。接着,我们查询所有。

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

engine = create_engine('sqlite:///example.db', echo=True)
Base = declarative_base()

class Employee(Base):
    __tablename__ = 'employees'

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

Base.metadata.create_all(engine)

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

employee = Employee(name='John', age=30)
session.add(employee)
session.commit()

employees = session.query(Employee).all()

for employee in employees:
    print(employee.name, employee.age)

在上面的代码中,我们首先创建一个连接字符串,并使用create_engine函数创建一个连接对象。然后,我们declarative_base函数创建一个名为Base的基类对象。在基类中,我们使用Column类创建idnameage字段。在id字段中,我们使用primary_key=True设置该字段为键。__tablename__属性中,我们设置表名为employees

接着,我们使用metadata.create_all方法创建Employee表。

然后,我们使用sessionmaker函数创建一个Session类。接着,我们使用Session类创建一个session。然后,我们一个Employee对象,并设置nameage字段的值。然后,我们使用add方法将数据插入到SQLite数据库中。最后,我们使用commit方法提交更改。

最后,我们使用query方法查询Employee表中的所有数据。然后,我们for循环遍历所有数据,并打印出每个工的姓名和年龄。

示例2

在这个示例中,我们使用SQLAlchemy连接SQLite数据库,并创建一个Order表。然后,我们插入两条数据到Order表中。接着,我们查询所有数据,并更新一条数据和删除一条。

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

engine = create_engine('sqlite:///example.db', echo=True)
Base = declarative_base()

class Order(Base):
    __tablename__ = 'orders'

    id = Column(Integer, primary_key=True)
    customer_name = Column(String)
    order_date = Column(Date)

Base.metadata.create_all(engine)

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

order1 = Order(customer_name='John', order_date='2023-05-12')
session.add(order1)

order2 = Order(customer_name='Mary', order_date='2023-05-13')
session.add(order2)

session.commit()

orders = session.query(Order).all()

for order in orders:
    print(order.customer_name, order.order_date)

order = session.query(Order).filter_by(customer_name='John').first()
order.order_date = '2023-05-14'
session.commit()

order = session.query(Order).filter_by(customer_name='Mary').first()
session.delete(order)
session.commit()

在上面的代码中,我们首先创建一个连接字符串,并使用create_engine函数创建一个连接对象。然后,我们declarative_base函数创建一个名为Base的基类对象。在基类中,我们使用Column类创建idcustomer_nameorder_date字段。在id字段中,我们使用primary_key=True该字段为主键。在__tablename__属性中,我们设置表名为orders

接,我们使用metadata.create_all方法创建Order表。

然后,我们使用sessionmaker函数创建一个Session类。接着,我们使用Session类创建一个session对象。然后,我们一个Order对象,并设置customer_name_date字段的值。然后,我们使用add方法将数据插入到SQLite数据库中。最后,我们使用commit方法提交更改。

接着,我们使用query方法查询Order表中的所有数据。然后,我们使用for循环遍历所有数据,并打印每个订单客户姓名和订单日期。

然后,我们使用query方法查询Order表中customer_nameJohn的数据。然后,更新该数据的order_date字段,并使用commit方法提交更改。

最后,我们使用query方法查询Order表中customer_nameMary的数据。然后,我们使用delete方法删除该数据。最后,我们使用commit`方法提交更改。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:如何在Python中使用SQLAlchemy ORM操作数据库? - Python技术站

(0)
上一篇 2023年5月12日
下一篇 2023年5月12日

相关文章

  • 关于python字符串方法分类详解

    关于Python字符串方法分类详解的完整攻略如下: 介绍 Python字符串是不可变的,即在创建字符串后,不能对其内容进行修改。因此,Python中提供了许多字符串操作类和方法来处理和操作字符串。这些方法涉及到字符串的各种用途(例如,字符串查找、替换、大小写转换等),并且可以根据使用逻辑进行分组分类。 Python字符串方法可以根据其功能分类为以下主要类别:…

    python 2023年6月5日
    00
  • selenium+python自动化测试之环境搭建

    十分感谢您对Selenium的关注!下面是“selenium+python自动化测试之环境搭建”的详细攻略,分为以下几个步骤: 步骤1:安装Python 将Python安装到您的电脑上。如果您已经安装了Python,请跳过此步骤。可以从Python官方网站 https://www.python.org/downloads/ 下载适合您的版本。 步骤2:安装p…

    python 2023年5月19日
    00
  • 微信跳一跳怎么刷高分?用Python玩微信跳一跳Mac+iOS+Win详细教程

    我们来详细讲解一下“微信跳一跳怎么刷高分?用Python玩微信跳一跳Mac+iOS+Win详细教程”的完整攻略。 1. 安装相关软件和库 首先需要安装Python3和一些相关依赖库,包括opencv-python、numpy、matplotlib、adb-python等。这些软件和库可以通过pip进行安装。 pip install opencv-python…

    python 2023年5月23日
    00
  • 关于MySQL运行机制原理以及架构

    一.概念 MySQL是一个开放源代码的关系数据库管理系统。原开发者为瑞典的MySQL AB公司,最早是在2001年MySQL3.23进入到管理员的视野并在之后获得广泛的应用。  2008年MySQL公司被Sun公司收购并发布了首个收购之后的版本MySQL5.1,该版本引入分区、基于行复制以及plugin API。 移除了原有的BerkeyDB引擎,同时,Or…

    MySQL 2023年4月12日
    00
  • Python Selenium参数配置方法解析

    Python+Selenium是一种常用的自动化测试框架,它可以模拟用户在浏览器中的操作,例如点击、输入、滚动等。在使用Python+Selenium进行自动化测试时,需要对Selenium参数进行配置。本文将详细讲解Python+Selenium参数配置方法,并提供两个示例。 步骤1:安装Selenium 要使用Python+Selenium进行自动化测试…

    python 2023年5月15日
    00
  • SQL Server 总结复习 (二)

    下面是对”SQL Server 总结复习(二)”的完整攻略。 概述 这篇文章主要是关于SQL Server的一些总结,包括索引、事务和锁等常用的基本概念。同时还包括一些细节问题的解答,可以帮助我们更好地理解和使用SQL Server。 索引 索引的类型 普通索引:也叫非聚集索引,它的单次查询速度通常比聚集索引快,但是增加、更新和删除操作可能要更慢一些,在实际…

    database 2023年5月21日
    00
  • Pandas如何将表格的前几行生成html实战案例

    在Pandas中,可以使用to_html()方法将DataFrame对象转换为HTML表格。以下是Pandas如何将表格的前几行生成HTML实战案例的详细攻略: 将DataFrame对象的前几行生成HTML表格 要将DataFrame对象的前几行生成HTML表格,可以使用head()方法获取前几行数据,然后使用to_html()方法将数据转换为HTML表格。…

    python 2023年5月14日
    00
  • python和mysql交互操作实例详解【基于pymysql库】

    下面我来详细讲解一下“Python和MySQL交互操作实例详解【基于pymysql库】”的完整攻略。主要包含以下几个方面: 环境准备:需要安装Python和pymysql库,并确保已经安装MySQL数据库并创建了对应的数据库和表 连接MySQL数据库:使用pymysql.connect()方法创建一个MySQL连接,其中需要指定MySQL服务器的地址、用户名…

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