为什么我可以在python sqlite数据库中的int列中插入字符串值

问题描述 投票:0回答:2

我在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,' - ')]”被打印出来,为什么?

python database sqlite
2个回答
2
投票

它被记录为SQLite文档中的一个特性,甚至记录的是它的FAQ

(3)SQLite允许我将一个字符串插入一个整数类型的数据库列!

这是一个功能,而不是一个bug。 SQLite使用动态类型。它不强制实施数据类型约束。任何类型的数据都可以(通常)插入任何列......


-1
投票

从sqlite页面:INSERT INTO table1(column1,column2,..)VALUES(value1,value2,...);

插入数据后,您需要告诉它进入哪些字段。

© www.soinside.com 2019 - 2024. All rights reserved.