1

我有一行在 id 列 350268180138164200 中有一个相当大的值。当我尝试选择它时

select * from my_table where id=350268180138164200

我什么也没得到,但是当我插入一行 id=222 时,我可以毫无问题地选择它。

select *, typeof(id) from my_table 

表明 id 的数据类型是整数。

更新:我通过改变我的插入代码摆脱了麻烦,这就是它的样子:

conn = lite.connect('my.sqlite')

with conn:
cur = conn.cursor()


    cur.execute("INSERT INTO MY_TABLE (ID) "
                    "VALUES( :id)",
                    { 'id' : -here is smth of type = long- } )
    conn.commit()

现在我已将其更改为看起来像(并且选择正在工作):

conn = lite.connect('my.sqlite')

with conn:
cur = conn.cursor()


    cur.execute("INSERT INTO MY_TABLE (ID) "
                    "VALUES( CAST(:id AS INTERGER))",
                    { 'id' : -here is smth of type = long- } )
    conn.commit()

所以我怀疑 python sqlite 模块(或 sqlite lib 本身)正在做一些演员,这符合我的目标。或者我不知道。

4

1 回答 1

2

在这里工作:

sqlite> create table t (id integer);
sqlite> insert into t values (350268180138164200);
sqlite> select * from t;
350268180138164200
sqlite> select * from t where id = 350268180138164200;
350268180138164200
sqlite> select *, typeof(id) from t where id = 350268180138164200;
350268180138164200|integer
于 2013-06-28T09:49:46.277 回答