簡體   English   中英

無法在 Python-MySQL 表中迭代插入值

[英]Unable to iteratively insert values in Python-MySQL tables

我在嘗試在 MySQL 表中迭代插入值時遇到錯誤。 我不確定插入語句是否正確? 或者我們有沒有更好的方法在我的表中插入值。

mysql.connector.errors.ProgrammingError: 1064 (42000): 你的 SQL 語法有錯誤;

 import mysql.connector
 from collections import defaultdict

 cnx = mysql.connector.connect(user='root', password='hadoop',
                          host='localhost',
                          database='test')


 lines = defaultdict(dict)
 with open("test.txt") as f:
  for line in f:
    parts = line.split()
    key = tuple(parts[1:3]) # unique key with servername and datetime
    lines[key][parts[0]] = parts[3]
    lines[key]["servername"] = parts[2]
    lines[key]["datetime"] = parts[1]

 res = list(lines.values())

try:
  cursor = cnx.cursor()
  for index in range(len(res)):

       cursor.execute("""
           insert into cpu_util_all  (servername,date_time,cpu_number,cpu_user,cpu_nice,cpu_system,cpu_wait,cpu_idle)                values ('%s', '%s', '%s', '%s','%s', '%s', '%s', '%s') %    (res[index]["servername"],res[index]["datetime"],res[index]["cpunumber"],res[index]["cpuuser"],res[index]["cpunice"],res[index]["cpusystem"],res[index]["cpuwait"],res[index]["cpudile"])
 """)

cnx.commit()
cursor.close()
 finally:
   cnx.close()

print("Inserted successfully")

問題是您試圖在查詢本身中進行字符串替換。 此外,您應該允許 MySQLdb 為您解析參數值,例如:

cursor.execute("""
        insert into cpu_util_all 
            (servername,date_time,cpu_number,cpu_user,
             cpu_nice,cpu_system,cpu_wait,cpu_idle) 
        values (%s, %s, %s, %s, %s, %s, %s, %s)""", 
        (res[index]["servername"],res[index]["datetime"],
         res[index]["cpunumber"],res[index]["cpuuser"],
         res[index]["cpunice"],res[index]["cpusystem"],
         res[index]["cpuwait"],res[index]["cpudile"]
        )
    )

暫無
暫無

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

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