2017-05-31 44 views
0

亲爱的堆栈溢出社区,SQLite不检查数据类型

我这里开始我的第一次尝试数据库,设计有一个小问题。

我尝试制作某种表格并尝试查看基本功能;用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

+0

欢迎来到SO,用问题 –

回答

3

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

+0

中的代码更新您的问题好的,谢谢您的回答!此功能是否连接到某些性能损失或更高的内存消耗?如果是的话,是否有办法禁用此功能? – beinando

+0

不知道内存消耗,但肯定没有办法让SQLite更严格。你需要一个不同的SQL实现。 – phd

+0

SQLite通常使用更少的内存,并且比其他数据库更快,但是比较嵌入式和客户/服务器数据库并没有什么意义。如果你真的需要它们,你可以[添加手动检查](https://stackoverflow.com/documentation/sqlite/5252/data-types)。 –