📅  最后修改于: 2023-12-03 15:05:19.720000             🧑  作者: Mango
SQLAlchemy是Python中最流行的关系数据库ORM框架之一。SQLAlchemy核心是一个轻量级的、低层次的、基于SQL语句的工具包,它允许你使用Python语言来操作关系数据库。在SQLAlchemy中,使用函数是一种非常常见的操作方式,本文将介绍在SQLAlchemy中如何使用函数。
在开始之前,我们需要先建立一个数据库连接。我们可以使用SQLAlchemy中的create_engine
函数来创建一个连接:
from sqlalchemy import create_engine
engine = create_engine('postgresql://username:password@host:port/database')
其中,postgresql
表示使用的数据库类型,username
和password
表示连接数据库所需要的用户名和密码,host
和port
表示数据库所在的主机和端口,database
表示需要连接的数据库名称。你需要根据你自己的数据库信息进行相应的修改。
在使用函数之前,我们需要先创建一张表。在SQLAlchemy中,使用Table
类来创建表。例如,我们创建一个users
表:
from sqlalchemy import Table, Column, Integer, String, MetaData
metadata = MetaData()
users = Table(
'users',
metadata,
Column('id', Integer, primary_key=True),
Column('name', String),
Column('age', Integer),
Column('email', String),
)
在上面的代码中,我们使用Column
类来定义表中的列,并将这些列构建成一张表。
下面让我们来看看如何使用函数来插入数据。在SQLAlchemy中,使用insert
函数可以插入数据。例如,我们插入一条记录到users
表中:
from sqlalchemy import insert
conn = engine.connect()
ins = insert(users).values(name='Alice', age=25, email='alice@example.com')
result = conn.execute(ins)
print(result.lastrowid)
在上面的代码中,我们构造了一个insert
对象,并将它传递给execute
函数。这个insert
对象使用values
函数来指定需要插入的数据。execute
函数返回一个ResultProxy
对象,其中lastrowid
属性就表示刚刚插入的记录的id值。
接下来,让我们看看如何使用函数来查询数据。在SQLAlchemy中,使用select
函数来查询数据。例如,我们查询所有users
表中的记录:
from sqlalchemy import select
sel = select(users)
result = conn.execute(sel)
for row in result:
print(row)
在上面的代码中,我们构造了一个select
对象,并将它传递给execute
函数。execute
函数返回一个ResultProxy
对象,其中每个元素表示一条记录。我们可以对这个对象进行迭代,来访问每一条记录的数据。
有时,我们需要使用函数来更新数据库中的数据。在SQLAlchemy中,使用update
函数可以更新数据。例如,我们将name
为Alice
的记录的age
字段更新为26
:
from sqlalchemy import update
upd = update(users).where(users.c.name == 'Alice').values(age=26)
result = conn.execute(upd)
print(result.rowcount)
在上面的代码中,我们构造了一个update
对象,并使用where
函数来限定要更新的记录。execute
函数返回一个ResultProxy
对象,其中rowcount
表示更新了多少条记录。
最后,让我们看看如何使用函数来删除数据。在SQLAlchemy中,使用delete
函数可以删除数据。例如,我们删除age
小于25
的记录:
from sqlalchemy import delete
dlt = delete(users).where(users.c.age < 25)
result = conn.execute(dlt)
print(result.rowcount)
在上面的代码中,我们构造了一个delete
对象,并使用where
函数来限定要删除的记录。execute
函数返回一个ResultProxy
对象,其中rowcount
表示删除了多少条记录。
本文介绍了在SQLAlchemy中如何使用函数。使用函数可以让我们更方便地操作数据库。如果你使用了其他数据库,可以根据需要进行相应的修改。