簡體   English   中英

數據插入未反映在 mysql 數據庫中

[英]Data insertion not reflecting in mysql database

我正在嘗試這篇文章: 如何加快 Python CSV 讀取到 MySQL 寫入以加快我的數據插入腳本。 我的表格格式:'''CREATE TABLE 模式(pattern_id CHAR(32) PRIMARY KEY, block CHAR(4), pattern_source ENUM('LABEL','BURST'), pattern VARCHAR(150), pattern_type ENUM('PROD', 'EVAL','RMA','QMFAT','BURN_IN','DEBUG','UNKNOWN','REPAIR','VALIDATION') )''' 我根據我的數據庫配置進行了修改。 但是在運行腳本后,它運行沒有錯誤,並且表中的數據沒有更新。 請參閱上面該帖子中的刻度線代碼片段。 在這里找到我的代碼。

 import mysql.connector import time import concurrent.futures import csv import itertools CSVFILE='C:\\Users\\Downloads\\pattern.csv' CHUNK=10_000 def doBulkInsert(rows): with mysql.connector.connect(user='root', password='zxcasdQWE123', host='localhost', database='testdatabase') as connection: connection.cursor().executemany(f'INSERT INTO table_name (pattern_id, block, pattern_source, pattern, pattern_type) VALUES (%s, %s, %s, %s, %s)',rows) connection.commit() def main(): _s = time.perf_counter() with open(CSVFILE) as csvfile: csvdata = csv.reader(csvfile) _s = time.perf_counter() with concurrent.futures.ThreadPoolExecutor() as executor: while (data:= list(itertools.islice(csvdata, CHUNK))): executor.submit(doBulkInsert, data) executor.shutdown(wait=True) print(f'Duration = {time.perf_counter()-_s}') if __name__ == '__main__': main()
你能告訴或更新代碼為什么它沒有更新。

您應該始終對字符串做的一件事是在它們的名稱周圍使用 ''。 當名稱中有空格時,查詢將失敗。 所以而不是:

值(%s、%s、%s、%s、%s)

你可以試試:

值(“%s”、“%s”、%s、“%s”、%s)

下一個問題,每個插入的 pattern_id 應該是唯一的,否則 mysql 會抱怨並且只保留第一個。 您必須絕對確定 pattern_id 是唯一的,如果不是,請為鍵創建一個新列。 即使您從不使用該號碼。

此外,您能否在運行 Sql 語句之前打印它們。 我不確定您的 Python 代碼是否正確。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM