Sqlite:无法选择具有大整数id的行

时间:2013-06-28 09:46:39

标签: python sqlite

我有一行在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本身)正在做一些演员,这与我的目标一致。或者我不知道。

1 个答案:

答案 0 :(得分: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