繁体   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