SQLite不检查数据类型

时间:2017-05-31 14:13:24

标签: python sqlite sqldatatypes

亲爱的Stack Overflow社区,

我在开始第一次尝试使用Database-Design时遇到了一些问题。

我尝试制作一些表格,并尝试检查基本功能;用Python3和SQLite3编写。

我的问题很简单,我有几句话:

cur.execute('CREATE TABLE IF NOT EXISTS test(a INTEGER, argument DATE)')

现在我可以写:

cur.execute('insert into test (a, argument) values (?,?)', "bla", "blabla")

没有收到错误消息;在CREATE TABLE语句中定义允许的数据类型时,SQL是否应该自动禁止此命令?

完整代码在此处:http://codepad.org/kf4gZB7m

2 个答案:

答案 0 :(得分:4)

这是一个功能,而不是一个bug。 SQLite使用动态类型。见https://sqlite.org/faq.html#q3

答案 1 :(得分:0)

此功能为类型相似性

  

使用刚性类型的SQL数据库引擎通常会尝试   自动将值转换为适当的数据类型。的   这里的重要思想是建议使用该类型,而不是必需。

文档:https://sqlite.org/datatype3.html#affinity