【问题标题】:1366 (HY000): Incorrect decimal value: ''8.99'' for column 'price' at row 11366 (HY000):十进制值不正确:第 1 行的“价格”列“8.99”
【发布时间】:2021-08-05 15:53:32
【问题描述】:
create_query = '''CREATE TABLE Sales(
order_num VARCHAR(255) NOT NULL,
order_type VARCHAR(255) NOT NULL,
cust_name VARCHAR(255) NOT NULL,
cust_state VARCHAR(255) NOT NULL,
prod_category VARCHAR(255) NOT NULL,
prod_number VARCHAR(255) NOT NULL,
prod_name VARCHAR(255) NOT NULL,
quantity INT(255) NOT NULL,
price DEC(65) NOT NULL,
discount DEC(65) NOT NULL,
order_total DEC(65) NOT NULL,
PRIMARY KEY (order_num))'''

cursor.execute("DROP TABLE IF EXISTS Sales")

cursor.execute(create_query)

with open('./red30.csv', 'r') as f:
    csv_data = csv.reader(f)
    for row in csv_data:
        row_tuple = tuple(row)
        cursor.execute('INSERT INTO Sales(order_num,order_type, cust_name, cust_state, prod_category, prod_number, prod_name, quantity, price, discount, order_total) VALUES("%s","%s", "%s", "%s", "%s", "%s", "%s", "%s", "%s", "%s", "%s")', row_tuple)

【问题讨论】:

    标签: python mysql csv


    【解决方案1】:

    你的列price必须允许小数位:

    price DEC(65, 2) NOT NULL,
    

    https://dev.mysql.com/doc/refman/8.0/en/precision-math-decimal-characteristics.html

    【讨论】:

    • 另外 65 位的精度可能是过高的,除非你预计通货膨胀会增加很多!
    猜你喜欢
    • 2016-03-13
    • 1970-01-01
    • 2017-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-08
    相关资源
    最近更新 更多