使用 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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 「python」向DataFrame資料格式中插入行Python
- Python 操作 SQLite 資料庫PythonSQLite資料庫
- Python操作SQLite資料庫PythonSQLite資料庫
- Python中內建資料庫!SQLite使用指南! ⛵Python資料庫SQLite
- Python連線SQLite資料庫PythonSQLite資料庫
- Python資料結構:字典Python資料結構
- Python資料庫模組(sqlite3,SQLite3)Python資料庫SQLite
- Python SQLite資料庫程式設計PythonSQLite資料庫程式設計
- Android 中使用 SQLite 資料庫AndroidSQLite資料庫
- 將json資料轉換為Python字典將json資料轉換為Python字典JSONPython
- python如何將資料插入資料庫Python資料庫
- 使用JDBC向MySQL資料庫批次插入10W條資料測試效率JDBCMySql資料庫
- SQL Server 2014如何使用遊標迴圈向遠端資料庫插入資料SQLServer資料庫
- 向PostgreSQL資料庫插入Date型別資料包錯SQL資料庫型別
- 使用MySqlBulkLoader批量插入資料MySql
- python資料插入連線MySQL資料庫PythonMySql資料庫
- Python:字典的使用Python
- python-資料型別之字典Python資料型別
- python字典和結構化資料Python
- 用python字典統計CSV資料Python
- Android iText向pdf模板插入資料和圖片Android
- python3.x中ORM框架SQLObject使用SQLite資料庫隨筆PythonORM框架ObjectSQLite資料庫
- swift基本資料型別使用-字典使用Swift資料型別
- mybatis插入資料、批量插入資料MyBatis
- MySQL 資料庫表格建立、資料插入及獲取插入的 ID:Python 教程MySql資料庫Python
- 1.1.4 python基本資料型別之字典Python資料型別
- Python - 基礎資料型別 dict 字典Python資料型別
- Python標準庫14 資料庫 (sqlite3)Python資料庫SQLite
- 105-Python中將資料插入字串Python字串
- 向資料庫中插入一條新的資料,並返回新增資料的ID資料庫
- 使用 【Ado.Net】 批量插入資料
- 19. 使用MySQL之插入資料MySql
- python 資料處理(字串擷取、()\[]\{}資料型別、{}字典資料取值)Python字串資料型別
- python sqlitePythonSQLite
- Sqlite—資料型別SQLite資料型別
- Python中字典使用詳解Python
- Python列表、元組、字典使用Python
- python3 字典的使用Python