3

当我将具有整数值的内容存储为字符串时,当我检索它时,它突然变成了一个 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'and form['content']='2', at the Exception, hello==u'1'and content==u'2'。到目前为止,这一切都很好。然后我存储在 中DB,但是当我去检索时,突然条目是 typeint 12。对于任何其他字符串,一切正常,例如"lorem ispum".

在我的sql schema,titlecontent都是类型string。这是怎么回事?

4

1 回答 1

1

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

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

您可以在SQLite 文档中阅读更多相关信息- 滚动到2.0 Type Affinity

于 2012-12-25T06:42:43.070 回答