一、简介
SQLAIchemy 是一个功能强大的 SQL 工具包,支持多种数据库系统,并提供了丰富的 API来操作数据库。在 SQLAlchemy 中,Column 是用来定义数据库表的字段的,通过它可以指定字段的名称、数据类型、约束等参数。本文将详细介绍 Column 的常用参数配置,并给出相应的示例代码。
二、Column 常用参数配置
序号 | 参数名称 | 说明 |
---|---|---|
1 | name | 字段的名称,默认为类属性的名称。指定ORM模型的中某个属性映射到表中的字段名。如果不指定,那么会使用这个属性的名字来作为字段名。如果指定了,就会使用指定的这个值作为表字段名。这个参数也可以当作位置参数,在第1个参数来指定。 |
2 | type_ | 字段的数据类型,如 Integer、String、Date 等。 |
3 | primary_key | 指定某个字段是否为主键,默认为 False。 |
4 | unique | 指定某个字段的值是否唯一,默认是False。 |
5 | nullable | 指定某个字段是否为空。默认值是True,可以为空。 |
6 | default | 默认值,当插入数据时没有提供该字段的值时使用。 |
7 | index | 是否创建索引,默认为 False。 |
8 | autoincrement | 是否为自增字段,仅适用于整数类型,默认为False。 |
9 | onupdate | 更新的时候执行的函数。在数据更新的时候会调用这个参数指定的值或者函数。在第一次插入这条数据的时候,不会用onupdate的值,只会使用default的值。常用于是字段(每次更新数据的时候都要更新该字段值)。 |
四、SQLAlchemy 常用数据类型:
序号 | 数据类型 | 说明 |
---|---|---|
1 | Integer | 整形 |
2 | Float | 浮点类型 |
3 | Boolean | 传递True/False |
4 | DECIMAL | 定点类型,具有小数点而且数值确定的数值 |
5 | enum | 枚举类型 |
6 | DateTime | 日期时间类型 |
7 | Date | 传递datetime.date()进去 |
8 | Time | 传递datatime.time() |
9 | String | 字符类型,使用时需要指定长度,区别于Text类型 |
10 | Text | 文本类型 |
11 | LONGTEXT | 长文本类型 |
五、示例代码
下面是一个使用 SQLAlchemy Column 创建数据库表的示例代码,其中涉及了常用参数的使用:
from sqlalchemy import Column, Integer, String, DateTime, create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import orm
Base = declarative_base()
class User(Base):
__tablename__ = 'users' #当数据库的表名与类名不对应时需要设置
__table_args__ = {'extend_existing': True} #避免flask迁移数据库,二次创建表问题
id = Column(Integer, primary_key=True, autoincrement=True)
username = Column(String(50), unique=True, nullable=False)
email = Column(String(100), unique=True, nullable=False)
password = Column(String(100), nullable=False)
created_at = Column(DateTime, default=datetime.datetime.utcnow)
updated_at = Column(DateTime, onupdate=datetime.datetime.utcnow)
# 创建数据库引擎
engine = create_engine('sqlite:///example.db')
# 创建表
Base.metadata.create_all(engine)
# 创建会话
Session = orm.sessionmaker(bind=engine)
session = Session()
在上面的示例代码中,我们定义了一个名为 User
的类,它继承自 Base
,__tablename__
指定了数据库表的名称为 users
。在 User
类中,我们定义了几个字段,分别是id
、username
、email
、password
、created_at
和 updated_at
。这些字段都使用了Column
类来定义,并设置了相应的参数。例如,id
字段设置为主键,并开启自增;username
和 email
字段设置为唯一且不可为空;created_at
和 updated_at
字段设置了默认值和更新时的值。