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