Python 烧瓶+;Sqlite:作为整数的字符串返回int类型?

Python 烧瓶+;Sqlite:作为整数的字符串返回int类型?,python,string,sqlite,int,flask,Python,String,Sqlite,Int,Flask,当我将一个整数值的内容存储为字符串时,当我检索它时,它突然变成一个int 这就是我看到的:我用这个来存储 db = get_db() hello = escape(str(request.form['name'])).striptags() what = escape(str(request.form['content'])).striptags() db.execute('''insert into entry ( title, content, score, approved, pub_da

当我将一个整数值的内容存储为字符串时,当我检索它时,它突然变成一个int

这就是我看到的:我用这个来存储

db = get_db()
hello = escape(str(request.form['name'])).striptags()
what = escape(str(request.form['content'])).striptags()
db.execute('''insert into entry (
title, content, score, approved, pub_date) values (?, ?, 0, 0,?)''',
[hello,what,int(time.time())])
raise Exception('what')
db.commit()
当我从页面提交时,在
例外处说
form['name']='1'
form['content']='2'
hello==u'1'
content==u'2'
。到目前为止一切都很好。然后我将其存储在
DB
中,但是当我去检索时,条目突然变成了
int
1
2
。对于任何其他字符串,例如
“lorem ispum”
,一切都正常


在我的
sqlschema
中,
title
content
都是类型
string
。发生了什么?

请注意,在SQLite中,使用任何列类型都不能保证此列只允许存储此类型的值-它仍然可以存储任何类型的值

我认为在您的情况下发生的是,您的列具有整数或数值关联,在这种情况下,SQLite通常会存储整数类型的值。但是,如果您试图存储无法无损转换为整数的数据,SQLite将自动将其转换为文本。(或者,您的列可能具有文本关联性,但Python以某种方式强制此字段将其存储为整数(如果它看起来像整数)


您可以在滚动到2.0类型关联中了解更多信息。

如何检测它们是int而不是字符串?我收到一个错误,其中函数对类型“int”不起作用。另外,我通过引发一个错误打开Flask控制台,并检查查询返回的内容,它确实是一个int。仍然不知道答案,但我只是通过将查询结果转换为字符串,然后再提供给模板来解决问题。好的。是的,这是一种奇怪的行为,只有在数据库列类型为INT/NUMERIC时才会发生。你说得对!SQLite根本无法识别“string”,所以我猜它默认为数值关联。我将模式更改为“文本”,现在它显示了正确的行为。谢谢