SQLAlchemy 自增主键

2024年06月18日 SQLAlchemy 自增主键 极客笔记

SQLAlchemy 自增主键

在数据库中,自增主键是指当插入一条记录时,主键值会自动递增,确保每条记录都具有唯一的主键值。在 SQLAlchemy 中,我们可以通过指定主键字段的类型为 Integer,并设置参数 autoincrement 为 True 来实现自增主键的功能。

创建表格

首先,我们需要使用 SQLAlchemy 来创建一个表格,并指定一个自增主键字段。下面是一个示例代码:

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

Base = declarative_base()

class User(Base):
    __tablename__ = 'users'

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

# 创建数据库引擎
engine = create_engine('sqlite:///test.db')

# 创建表格
Base.metadata.create_all(engine)

在上面的代码中,我们创建了一个名为 users 的表格,包括三个字段:id(自增主键)、nameage。我们将 id 字段设置为整型(Integer),并且指定 autoincrement=True 来实现自增主键。

插入记录

接下来,我们可以向表格中插入一条记录,并观察自增主键的效果:

# 创建 Session
Session = sessionmaker(bind=engine)
session = Session()

# 插入记录
user1 = User(name='Alice', age=25)
session.add(user1)
session.commit()

# 插入另外一条记录
user2 = User(name='Bob', age=30)
session.add(user2)
session.commit()

在上面的代码中,我们创建了一个 Session 对象,并且向表格中分别插入了两条记录。由于我们在表格定义中指定了 id 字段为自增主键,因此每条记录的 id 值会递增。

查询记录

最后,我们可以查询表格中的记录,并验证自增主键的效果:

# 查询所有记录
users = session.query(User).all()

for user in users:
    print(f'ID: {user.id} | Name: {user.name} | Age: {user.age}')

运行以上代码后,我们可以看到输出的结果如下所示:

ID: 1 | Name: Alice | Age: 25
ID: 2 | Name: Bob | Age: 30

从输出中可以看出,每条记录的 id 字段值确实是自动递增的,验证了我们对自增主键的设置是有效的。

总结来说,通过在 SQLAlchemy 中指定一个 Integer 类型的字段,并且设置 autoincrement 为 True,我们就可以实现自增主键的功能。这样能够确保每条记录都有唯一的主键值,便于唯一标识和操作数据库中的数据。

本文链接:http://so.lmcjl.com/news/6802/

展开阅读全文