SQLite 不检查数据类型

bei*_*ndo 2 python sqlite sqldatatypes

亲爱的 Stack Overflow 社区,

我在开始第一次尝试数据库设计时遇到了一个小问题。

我尝试制作某种表格并尝试查看基本功能;用 Python3 和 SQLite3 编写。

我的问题很简单,我有几行:

cur.execute('CREATE TABLE IF NOT EXISTS test(a INTEGER, argument DATE)')
Run Code Online (Sandbox Code Playgroud)

现在我可以写:

cur.execute('insert into test (a, argument) values (?,?)', "bla", "blabla")
Run Code Online (Sandbox Code Playgroud)

没有收到错误信息;当您在CREATE TABLE语句中定义允许的数据类型时,该命令不应该被 SQL 自动禁止吗?

完整代码在这里:http : //codepad.org/kf4gZB7m

phd*_*phd 5

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

  • 这是一个非常可怕的功能。至少应该有一种方法来开启正确的类型检查。:-/ (2认同)
  • @Timmmm 现在有:https://www.sqlite.org/stricttables.html (2认同)

Toa*_*yen 2

这个特性就是类型亲和力

使用严格类型的 SQL 数据库引擎通常会尝试自动将值转换为适当的数据类型。这里重要的想法是该类型是推荐的,而不是必需的。

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