python sqlite3无法识别的令牌

时间:2016-09-03 03:39:38

标签: python sqlite

我试图用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"

它出了什么问题?

1 个答案:

答案 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)")

注意两个相关的变化:

  1. 我已将所有文本字段更改为嵌套到引号中

  2. True成为Integer,因为SQLite不会将布尔值存储为特定类型。

  3. 来自https://www.sqlite.org/datatype3.html

      

    SQLite没有单独的布尔存储类。代替,   布尔值存储为整数0(假)和1(真)。

    因此,来自python的布尔值必须转换为0 或者1。