我试图用python在sqlite中做一些简单的操作。我已经创建了测试数据库并创建了一个表,但是当我尝试将数据插入其中时,我得到了一个未被识别的令牌'错误。
c.execute("创建表节点(changeset int,uid int,timestamp text,lon real,visible int,version int,user text,lat real,id int)")
创建表格。但是当我尝试插入第一行数据时:
c.execute("插入节点值(8581395,451048,2011-0629T14:14:14Z,-87.6939548,true,5,bbmiller,41.9729565,261114299)")
我收到错误:
OperationalError:无法识别的令牌:" 29T14"
它出了什么问题?
答案 0 :(得分:0)
该行
c.execute("insert into node values(8581395,451048,2011-0629T14:14:14Z,-87.6939548,true,5,bbmiller,41.9729565,261114299)")
应该是
c.execute("insert into node values(8581395, 451048, '2011-0629T14:14:14Z', -87.6939548, 1, 5, 'bbmiller', 41.9729565, 261114299)")
注意两个相关的变化:
我已将所有文本字段更改为嵌套到引号中
True成为Integer,因为SQLite不会将布尔值存储为特定类型。
来自https://www.sqlite.org/datatype3.html:
SQLite没有单独的布尔存储类。代替, 布尔值存储为整数0(假)和1(真)。
因此,来自python的布尔值必须转换为0 或者1。