2017-05-31 103 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)。 –