python sqlalchemy操作SQLite

举报
风吹稻花香 发表于 2021/06/04 22:51:47 2021/06/04
【摘要】   日期转时间: from sqlalchemy import Column, Integer, String, Float, Date  date = Column(Date)    data="20180921" day_his.date = datetime.strptime(date, "%Y%m%d") py...

 

日期转时间:

from sqlalchemy import Column, Integer, String, Float, Date

 date = Column(Date)

 

 data="20180921"

day_his.date = datetime.strptime(date, "%Y%m%d")

 

python sqlalchemy操作SQLite 的坑

常见的SQLALCHEMY列类型.配置选项和关系选项

 

类型名称    python类型    描述

Integer int 常规整形,通常为32

SmallInteger    int 短整形,通常为16

BigInteger  intlong    精度不受限整形

Float   float   浮点数

Numeric decimal.Decimal 定点数

String  str 可变长度字符串

Text    str 可变长度字符串,适合大量文本

Unicode unicode 可变长度Unicode字符串

Boolean bool    布尔型

Date    datetime.date   日期类型

Time    datetime.time   时间类型

Interval    datetime.timedelta  时间间隔

Enum    str 字符列表

PickleType  任意Python对象  自动Pickle序列化

LargeBinary str 二进制

常见的SQLALCHEMY列选项

可选参数    描述

primary_key 如果设置为True,则为该列表的主键

unique  如果设置为True,该列不允许相同值

index   如果设置为True,为该列创建索引,查询效率会更高

nullable    如果设置为True,该列允许为空。如果设置为False,该列不允许空值

default 定义该列的默认值

 查看文档得到,sqlalchemy 的数据类型有一种Time类型,类型是datetime.time

于是试了一下,将设计表结构改为这样

 
 
  1. self.tbOrder = Table('tbOrder', metadata,

  2. Column(tEmOrder.orderId.name, String(64), primary_key=True, default=gen_id),

  3. Column(tEmOrder.state.name, Integer),

  4. Column(tEmOrder.userId.name, String(64)),

  5. Column(tEmOrder.startTime.name, Time, default=datetime.datetime.now),

  6. Column(tEmOrder.endTime.name, Time, default=datetime.datetime.now),

  7. Column(tEmOrder.orderDate.name, Date, default=datetime.datetime.now),

  8. Column(tEmOrder.moonCount.name, Integer, default=0))

结果运行后报错如下:

sqlalchemy.exc.StatementError: (exceptions.TypeError) SQLite Time type only accepts Python time objects as input. [SQL: u'INSERT INTO "tbOrder" ("orderId", state, "userId", "startTime", "endTime", "orderDate", "moonCount") VALUES (?, ?, ?, ?, ?, ?, ?)'] [parameters: [{'state': 0, 'userId': '3ebd5f60-b752-11e8-9938-4cedfbcb4269'}]]

 

关键字是SQLite Time type only accepts Python time objects as input.

意思是:sqlite的Time类型只接受Python时间对象作为输入

什么意思?

最后在官网找到答案

http://docs.sqlalchemy.org/en/latest/core/functions.html?highlight=now#sqlalchemy.sql.functions.now

文章来源: blog.csdn.net,作者:网奇,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/jacke121/article/details/89291140

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。