使用 Python 字典向 SQLite 插入資料
問題背景
我正在使用 Python 字典將資料插入到 SQLite 表中。我有一個如下所示的程式碼段來插入資料,其中
sqlDataDict
是一個字典,其中有16列:
cur. execute( ''' INSERT INTO ProductAtt (imgID, productName, col1, col2, col3, col4, col5, col6,
col7, col8, col9, col10, col11, col12, col13, col14)
VALUES (:imgID, :productName, :col1, :col2, :col3, :col4,:col5, :col6, :col7, :col8, :col9,
:col10, :col11, :col12, :col13, :col14 )''', sqlDataDict)
但在某些情況下,字典中的值可能不是完整的,即有些列可能沒有對應的值。當這種情況發生時,我收到錯誤訊息 "You did not supply a value for binding"。
解決方案
要解決這個問題,我們需要一種方法來處理字典中丟失的值。我們可以使用
None
值來表示這些丟失的值,然後在執行 SQL 語句之前將它們新增到字典中。這可以透過以下方式完成:
# 建立一個新的字典,將丟失的值用 None 填充
sqlDataDict = { key: value if value is not None else None for key, value in sqlDataDict. items()}
# 執行 SQL 語句
cur. execute( ''' INSERT INTO ProductAtt (imgID, productName, col1, col2, col3, col4, col5, col6,
col7, col8, col9, col10, col11, col12, col13, col14)
VALUES (:imgID, :productName, :col1, :col2, :col3, :col4,:col5, :col6, :col7, :col8, :col9,
:col10, :col11, :col12, :col13, :col14 )''', sqlDataDict)
現在,當字典中存在丟失的值時,SQL 語句仍然可以正常執行,而不會出現錯誤。
以下是一個使用此解決方案的完整程式碼示例:
import sqlite3
conn = sqlite3. connect( 'database.db')
cur = conn. cursor()
# 建立表
cur. execute( '''CREATE TABLE IF NOT EXISTS ProductAtt (
imgID INTEGER PRIMARY KEY,
productName TEXT,
col1 REAL,
col2 REAL,
col3 TEXT,
col4 TEXT,
col5 TEXT,
col6 REAL,
col7 TEXT,
col8 TEXT,
col9 TEXT,
col10 TEXT,
col11 TEXT,
col12 TEXT,
col13 TEXT,
col14 TEXT
)''')
# 準備資料
data = [
{ 'imgID': '1', 'productName': 'Product 1', 'col1': 'Value 1', 'col2': 'Value 2', 'col3': 'Value 3'},
{ 'imgID': '2', 'productName': 'Product 2', 'col1': 'Value 4', 'col2': 'Value 5', 'col4': 'Value 6'},
{ 'imgID': '3', 'productName': 'Product 3', 'col1': 'Value 7', 'col3': 'Value 8', 'col5': 'Value 9'},
]
# 插入資料
for row in data:
# 建立一個新的字典,將丟失的值用 None 填充
sqlDataDict = { key: value if value is not None else None for key, value in row. items()}
# 執行 SQL 語句
cur. execute( ''' INSERT INTO ProductAtt (imgID, productName, col1, col2, col3, col4, col5, col6,
col7, col8, col9, col10, col11, col12, col13, col14)
VALUES (:imgID, :productName, :col1, :col2, :col3, :col4,:col5, :col6, :col7, :col8, :col9,
:col10, :col11, :col12, :col13, :col14 )''', sqlDataDict)
# 提交事務
conn. commit()
# 關閉連線
conn. close()
這個解決方案可以確保即使字典中存在丟失的值,資料也能正確地插入到 SQLite 表中。
最後我們需要注意的是,雖然使用字典插入資料具有上述優點,但在我們實際應用中,也需要注意資料型別匹配、異常處理以及資料庫事務等方面的問題,以確保資料的完整性和一致性。
來自 “ ITPUB部落格 ” ,連結:https://blog.itpub.net/70034537/viewspace-3008312/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- sqlite 資料庫的資料字典SQLite資料庫
- 「python」向DataFrame資料格式中插入行Python
- sqlite建立本地資料庫並插入資料SQLite資料庫
- CoreData實踐(三)——插入資料並使用SQLite Professional檢視SQLite
- ColdFusion向資料庫插入資料例子資料庫
- Python操作SQLite資料庫PythonSQLite資料庫
- Python 操作 SQLite 資料庫PythonSQLite資料庫
- Python中內建資料庫!SQLite使用指南! ⛵Python資料庫SQLite
- python用sqlite3模組操作sqlite資料庫PythonSQLite資料庫
- Python資料庫模組(sqlite3,SQLite3)Python資料庫SQLite
- 向表中插入大批量資料
- Python資料結構:字典Python資料結構
- python使用dbm持久字典(python微型資料庫)詳解Python資料庫
- Python連線SQLite資料庫PythonSQLite資料庫
- 使用JDBC向MySQL資料庫批次插入10W條資料測試效率JDBCMySql資料庫
- 使用sqlite3 模組操作sqlite3資料庫SQLite資料庫
- python如何將資料插入資料庫Python資料庫
- 使用PreparedStatement向資料表中插入、修改、刪除、獲取Blob型別的資料型別
- Python3資料庫模組(sqlite3,SQLite3)Python資料庫SQLite
- 用Python生成MySql資料字典PythonMySql
- 【Python】資料結構之字典Python資料結構
- python sqlite3 資料庫操作PythonSQLite資料庫
- Python SQLite資料庫程式設計PythonSQLite資料庫程式設計
- 在ASP.NET中,向資料庫批次插入資料 (轉)ASP.NET資料庫
- Android 中使用 SQLite 資料庫AndroidSQLite資料庫
- SQLite資料庫中rowid使用SQLite資料庫
- python資料插入連線MySQL資料庫PythonMySql資料庫
- 將json資料轉換為Python字典將json資料轉換為Python字典JSONPython
- swift基本資料型別使用-字典使用Swift資料型別
- mybatis插入資料、批量插入資料MyBatis
- python字典和結構化資料Python
- python-資料型別之字典Python資料型別
- 用python字典統計CSV資料Python
- Python:字典的使用Python
- 使用MySqlBulkLoader批量插入資料MySql
- SQL Server 2014如何使用遊標迴圈向遠端資料庫插入資料SQLServer資料庫
- Oracle 資料字典和資料字典檢視Oracle
- 使用資料字典檢視管理物件物件