在 sqlite 中存储整数会导致 BLOB(二进制值)而不是 SQLite 中的 INTEGER。问题是“Baujahr”列中的 INT。表已创建。
CREATE TABLE "Objekt" ( `No` INTEGER NOT NULL UNIQUE, `Objekt_id` INTEGER,
`Strecke` TEXT, `Baujahr` INTEGER, `Eigentümer` TEXT, PRIMARY KEY(`No`) )
Run Code Online (Sandbox Code Playgroud)
数据框和数据类型:
id Strecke Baujahr Eigentümer Objekt_id
5 A23 1938 Fronz 0327
Objekt.dtypes
Strecke object
Baujahr int64
Eigentümer object
Objekt_id object
dtype: object
Run Code Online (Sandbox Code Playgroud)
DataFrame 被写入 sqlite
stmt ="INSERT INTO Objekt (Objekt_id, Strecke, Baujahr, Eigentümer) VALUES (?, ?, ?, ?)"
c.execute(stmt, (Objekt.Objekt_id.values[0], Objekt.Strecke.values[0],
Objekt.Baujahr.values[0], Objekt.Eigentümer.values[0] ))
conn.commit()
Run Code Online (Sandbox Code Playgroud)
Sqlite 仅适用于 INT 8,不适用于 INT 32 或 …