python sqlalchemy操作SQLite
日期转时间:
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类型 描述
Integerint常规整形,通常为32位
SmallIntegerint短整形,通常为16位
BigIntegerint或long精度不受限整形
Floatfloat浮点数
Numeric decimal.Decimal 定点数
Stringstr可变长度字符串
Textstr可变长度字符串,适合大量文本
Unicodeunicode可变长度Unicode字符串
Booleanbool布尔型
Date datetime.date 日期类型
Time datetime.time 时间类型
Interval datetime.timedelta 时间间隔
Enumstr字符列表
PickleType 任意Python对象 自动Pickle序列化
LargeBinarystr二进制
常见的SQLALCHEMY列选项
可选参数 描述
primary_key 如果设置为True,则为该列表的主键
unique 如果设置为True,该列不允许相同值
index 如果设置为True,为该列创建索引,查询效率会更高
nullable 如果设置为True,该列允许为空。如果设置为False,该列不允许空值
default 定义该列的默认值
查看文档得到,sqlalchemy 的数据类型有一种Time类型,类型是datetime.time
于是试了一下,将设计表结构改为这样
-
self.tbOrder = Table('tbOrder', metadata, -
Column(tEmOrder.orderId.name, String(64), primary_key=True, default=gen_id), -
Column(tEmOrder.state.name, Integer), -
Column(tEmOrder.userId.name, String(64)), -
Column(tEmOrder.startTime.name, Time, default=datetime.datetime.now), -
Column(tEmOrder.endTime.name, Time, default=datetime.datetime.now), -
Column(tEmOrder.orderDate.name, Date, default=datetime.datetime.now), -
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
- 点赞
- 收藏
- 关注作者
评论(0)