我在python3中运行以下代码:
import sqlite3
conn = sqlite3.connect("data.db")
conn.execute("create table if not exists data(\
id int prinmary key,view int)")
conn.execute("insert into data (id,view) values (0,0)")
conn.execute("insert into data (id,view) values (1,'--')")
print(conn.execute("select * from data order by id").fetchall())
conn.commit()
conn.close()
并且没有发生错误,“[(0,0),(1,' - ')]”被打印出来,为什么?
它被记录为SQLite文档中的一个特性,甚至记录的是它的FAQ:
(3)SQLite允许我将一个字符串插入一个整数类型的数据库列!
这是一个功能,而不是一个bug。 SQLite使用动态类型。它不强制实施数据类型约束。任何类型的数据都可以(通常)插入任何列......
从sqlite页面:INSERT INTO table1(column1,column2,..)VALUES(value1,value2,...);
插入数据后,您需要告诉它进入哪些字段。