Flask + Sqlite:整数字符串返回int类型?

时间:2012-12-24 23:29:29

标签: 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_date) values (?, ?, 0, 0,?)''',
[hello,what,int(time.time())])
raise Exception('what')
db.commit()

当我从页面提交时,请form['name']='1'form['content']='2'Exceptionhello==u'1'content==u'2'。到目前为止,这一切都很好。然后我存储在DB,但是当我去检索时,突然输入的条目是int 12。对于任何其他字符串,一切都正确,例如"lorem ispum"

在我的sql schema中,titlecontent都是string类型。发生了什么事?

1 个答案:

答案 0 :(得分:1)

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

我认为您的案例中发生的事情是您的列具有INTEGER或NUMERIC亲缘关系,在这种情况下,SQLite通常会存储INTEGER类型的值。但是,如果您尝试存储无法无损地转换为INTEGER的数据,SQLite将自动将其转换为TEXT。 (或者,您的列可能具有TEXT亲和力,但是如果它看起来像整数,Python会以某种方式强制此字段将其存储为INTEGER。)

您可以在SQLite documentation中详细了解相关内容 - 滚动至 2.0类型亲和力