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

yizhihongxing

如何在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日

相关文章

  • 如何在NumPy中为行和列设置坐标轴

    在NumPy中,可以使用np.meshgrid函数为数组设置坐标轴。 首先,我们先导入NumPy库: import numpy as np 为行和列设置坐标轴 np.meshgrid函数可以将两个轴的坐标用于生成一个网格。该函数输入两个一维数组,并返回两个二维数组,其中一个数组用于行,另一个数组用于列。示例代码如下: x = np.array([1, 2, …

    python-answer 2023年3月25日
    00
  • 详解python3中socket套接字的编码问题解决

    要解决Python3中socket套接字的编码问题,我们需要了解以下几个概念和步骤: 编码和解码的概念:在Python中,编码的过程是将内存中的Unicode字符串转换成字节串形式,也就是二进制数据的形式。解码的过程相反,是将字节串转换成Unicode形式的字符串。 在socket编程中,数据需要以字节串(bytes)形式进行传输和接收。所以我们需要将字符串…

    python 2023年5月31日
    00
  • mysql数据库修改数据表引擎的方法

    下面是详细的mysql数据库修改数据表引擎的方法攻略。 1. 查看数据表引擎 使用SHOW CREATE TABLE语句可以查看表的创建语句,其中会显示该表当前的引擎类型。 示例如下: SHOW CREATE TABLE `table_name`; table_name表示要查看的表的名称。 2. 修改数据表引擎 要修改一个表的引擎类型,可以使用ALTER …

    database 2023年5月19日
    00
  • python3.7 sys模块的具体使用

    Python 的 sys 模块是一个内置模块,它提供了许多与 Python 解释器和 Python 程序运行环境有关的变量和函数。在本文中,我们将详细讲解 Python3.7 中 sys 模块的具体使用及示例。 sys 模块的导入和版本信息 我们可以通过以下方式导入 sys 模块: import sys 导入 sys 模块后,可以使用 sys.version…

    python 2023年5月31日
    00
  • 计算机二级python学习教程(3) python语言基本数据类型

    计算机二级python学习教程(3) python语言基本数据类型 本教程将着重介绍Python语言中的基本数据类型,包括数字、字符串、布尔值、列表、元组和字典等,并且会通过简单的示例让大家更好地理解这些数据类型的使用。 数字类型 Python中的数字类型包括整数和浮点数。其中整数类型是没有小数部分的数字。在Python中,整数可以表示为十进制、二进制、八进…

    python 2023年5月20日
    00
  • Python爬取数据保存为Json格式的代码示例

    下面我将为你详细讲解“Python爬取数据保存为Json格式的代码示例”的完整攻略。 一、前置知识 在介绍代码实现之前,我们需要了解一些前置知识: requests库:用于向网站发起HTTP请求并获取响应; json模块:用于将Python数据(如列表、字典)转换为Json格式的字符串,并将Json格式的字符串解析为Python对象; 爬虫基础知识:了解如何…

    python 2023年6月3日
    00
  • python3.3使用tkinter开发猜数字游戏示例

    下面是Python3.3使用Tkinter开发猜数字游戏的完整攻略,包含了两个示例说明。 猜数字游戏的完整攻略 1. 简介 猜数字游戏是一种非常经典的游戏,可以作为初学者学习Python GUI编程的练手项目。在这个项目中,我们将使用Python3.3和Tkinter库来实现一个简单的猜数字游戏。 2. 准备工作 在开始编写代码之前,需要先确保你已经正确安装…

    python 2023年6月13日
    00
  • MySQL远程访问设置终极方法

    MySQL远程访问设置终极方法 在MySQL数据库中,默认情况下只允许本机进行访问,如果需要从其他计算机上访问MySQL数据库,则需要进行一些设置。 以下是MySQL远程访问设置的终极方法: 1. 修改MySQL配置文件 打开MySQL的配置文件 my.cnf 或者 my.ini,路径一般为:/etc/my.cnf 或者 /etc/mysql/my.cnf。…

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