簡體   English   中英

使用python將數據導入MYSQL的問題(錯誤代碼:“SQL語句中未使用所有參數)

[英]Issue importing data into MYSQL using python (error code: "Not all parameters were used in the SQL statement)

我正在嘗試從 API 中獲取數據,然后創建一個表並根據收銀員姓名的輸入插入提取的數據。 我正在與 MYSQL 交互。

data1 是以下形式的字典列表:{'cashier': [{'open': 123, 'high': 3232, 'low': 321, 'close': 117.28, 'volume': 1231232, 'datetime ': 16031231612300}, {'open': 123, 'high': 3232, 'low': 321, 'close': 117.28, 'volume': 1231232, 'datetime': 160312316123]...

我可以使用正確的收銀員姓名輸入創建表格,但是,我似乎無法插入以上面顯示的 data1 格式顯示的數據。 我收到錯誤““並非所有參數都在 SQL 語句中使用”。我認為 executemany() 是正確的方法嗎?

 <!-- begin snippet: js hide: false console: true babel: false -->

data1 = content1.json()
cashier = input("cashier name: ")

import json
import mysql.connector

host = 'localhost' 
user = 'user'
password = 'password'  
database = 'stock_database'
        
cnxn = mysql.connector.connect(host = host, 
                                user = user, 
                                password = password, 
                                database = database)

mycursor = cnxn.cursor()
mycursor.execute("CREATE TABLE {cashier_name}_database \
                                            (symbol_id INT AUTO_INCREMENT PRIMARY KEY,\
                                             datetime BIGINT,\
                                             close DECIMAL,\
                                             volume DECIMAL,\
                                             high DECIMAL,\
                                             low DECIMAL, \
                                             open DECIMAL)".format(cashier_name=cashier))
insert_query = "INSERT INTO {cashier_name}_database \
                                (datetime, \
                                 close, \
                                 volume, \
                                 high, \
                                 low, \
                                 open) \
                                 VALUES (%(datetime)s, %(close)s, %(volume)s, %(high)s, %(low)s, %(open)s)".format(cashier_name=cashier)

mycursor.executemany(insert_query, data1)

cnxn.commit()

mycursor.close()
cnxn.close()

似乎您的 data1 不是字典列表,而是帶有“收銀員”鍵和字典列表作為值的字典。 您可以通過以下方式調用 executemany 函數:

mycursor.executemany(insert_query, data1['cashier']) 

或者,如果您的 data1 存儲不同收銀員的值,並且您為收銀員變量分配了一個指定值,則可以這樣使用 executemany 函數:

cashier = input("cashier name: ")
mycursor.executemany(insert_query, data1[cashier]) 

暫無
暫無

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

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