网站建设在windos的设置,wordpress全站ajax插件,网站开发语言查看,怎么做网站劳务中介常见数据类型与Column参数
常见类型
Integer#xff1a;整数类型#xff0c;对应数据库的 int 类型。Float#xff1a;浮点数类型#xff0c;对应数据库的 float 类型。它占用 32 位空间。Double#xff1a;双精度浮点数类型#xff0c;对应数据库的 double 类型#…常见数据类型与Column参数
常见类型
Integer整数类型对应数据库的 int 类型。Float浮点数类型对应数据库的 float 类型。它占用 32 位空间。Double双精度浮点数类型对应数据库的 double 类型占用 64 位空间。需要注意的是在 SQLAlchemy 中没有 Double 类型。String可变字符类型对应数据库的 varchar 类型。Boolean布尔类型对应数据库的 tinyint 类型。DECIMAL定点数类型主要用于解决浮点数精度问题。在存储与金钱相关的字段时推荐使用此数据类型。使用时需要传递两个参数第一个参数表示字段能存储的总位数第二个参数表示小数点后的位数。Enum枚举类型限制字段值只能为预设的几个值。在 ORM 模型中使用 Enum 类型表示枚举。也可以用 Python3 内置的 enum 模块定义字段。Date日期类型只能存储年月日。对应数据库的 date 类型。在 Python 代码中可以使用 datetime.date 来指定。DateTime日期时间类型可以存储年月日时分秒毫秒等。对应数据库的 datetime 类型。在 Python 代码中可以使用 datetime.datetime 来指定。Time时间类型可以存储时分秒。对应数据库的 time 类型。在 Python 代码中可以使用 datetime.time 来指定。Text长字符串类型一般可以存储超过 6 万个字符。如果超出这个范围可以使用 LONGTEXT 类型。对应数据库的 text 类型。LONGTEXT超长文本类型对应数据库的 longtext 类型。
常见的 Column 参数
primary_key将此字段设置为主键需要设定值为 True。autoincrement将此字段设置为自动递增需设定值为 True。default为某个字段设置默认值常用于如发布时间等字段。nullable确定某个字段是否可以为空。默认值为 True意味着该字段可以为空。unique确定某个字段的值是否需唯一。默认值为 False。onupdate在更新数据时会调用这个参数指定的值或函数。初次插入数据时不会使用 onupdate 的值而是使用 default 的值。这个参数常用于 update_time 字段每次数据更新时都需更新该字段的值。name指定 ORM 模型中的某个属性映射到表中的字段名。如果未指定则会使用该属性的名称作为字段名。如果已指定则会使用指定的值作为表字段名。该参数也可以作为位置参数在第一个参数中指定如 title Column(String(50),nametitle,nullableFalse) 或者 title Column(my_title,String(50),nullableFalse)。
样例实现
class News(Base):__tablename__ news# id 整数类型限制主键自增id Column(Integer, primary_keyTrue, autoincrementTrue)# 标题 长度为 100 字符类型 不能为空title Column(String(100), nullableFalse)# 作者电话 字符类型 唯一author_telephone Column(String(11), uniqueTrue, nullableFalse)# 是否删除 整型不能为空 默认为 0is_delete Column(Integer, nullableFalse, default0)# 是否公开 布尔类型 不能为空 默认为 Trueis_published Column(Boolean, nullableFalse, defaultTrue)# 标题1 枚举类型 常规写法tag1 Column(Enum(python, java, go, javascript))# 标题2 枚举类型 另一种写法tag2 Column(Enum(TagEnum))# 时间的三种类型created_at Column(Date, defaultdatetime.datetime.now)updated_at Column(DateTime, onupdatedatetime.datetime.now, defaultdatetime.datetime.now)published_at Column(Time)# 文本的两种类型content1 Column(Text)content2 Column(LONGTEXT)生成的数据库表字段如下 生成的 SQL 语句如下
create table news
(id int auto_incrementprimary key,title varchar(100) not null,author_telephone varchar(11) not null,is_delete int not null,is_published tinyint(1) not null,tag1 enum (python, java, go, javascript) null,tag2 enum (python, java, c, javascript, cpp) null,created_at date null,updated_at datetime null,published_at time null,content1 text null,content2 longtext null,constraint author_telephoneunique (author_telephone)
);测试样例
新增一条数据并更新相关字段值。
# 新建一个会话对象
session sessionmaker(bindengine)()# 创建一个 new 对象
new_demo News(title测试new,author_telephone15991367893,is_delete0,is_publishedTrue,tag1go,tag2TagEnum.c,created_atdatetime.datetime.now(),updated_atdatetime.datetime.now(),published_atdatetime.time(),content1这是一个测试性内容1,content2这是一个测试性内容2)# session.add(new_demo)
# session.commit()
# session.close()# 测试 onupdate 参数
a_new session.query(News).first()
a_new.title 这是修改后的标题
a_new.author_telephone 15991367894
# 提交事物
session.commit()
session.close()注意
我们设置了author_telephone此处有些不足不能满足正常开发需求切忌在项目中使用。