使用python在mysql中插入字符串:未知列

2024-04-26 04:53:10 发布

您现在位置:Python中文网/ 问答频道 /正文

首先,我是一个初学者,我很感谢你的帮助:)

当我插入一个字符串时,它会给我一个错误double或single引用。这个只有当我调用我创建的函数insert()时才会发生。但是当我用一个数字来代替那些没有引号的字符串时,它是有效的。在

import mysql.connector

conn = mysql.connector.connect(user="root",password='password',
       host='localhost',database='library',port='3306')
cur = conn.cursor()


def create_table():
    cur.execute("CREATE TABLE IF NOT EXISTS store 
               (id INT PRIMARY KEY, item VARCHAR(25), quantity INT, price REAL);")
    conn.commit()
    conn.close()


def insert(id, item, quantity, price):
    cur.execute("INSERT INTO store (id, quantity, price, item) 
                VALUES (%s, %s, %s, %s)" % (id, item, quantity, price))
    conn.commit()
    conn.close()



insert(50, 'test', 20, 10)

然后它给出了一个错误:

^{pr2}$

Tags: store字符串idexecuteconnectordef错误mysql
2条回答

您没有正确使用占位符功能。正确的行是:

cur.execute("INSERT INTO store (id, quantity, price, item) 
            VALUES (%s, %s, %s, %s)", (id, item, quantity, price))

注意,不是%,这会产生严重的{a1}。在

您的查询被扩展到如下内容:

^{pr2}$

其中test部分根本没有被引用,被视为可能的列名。在

您混淆了insert语句中列的顺序,将“insert INTO store(id,quantity,price,item)”更改为“insert INTO store(id,item,quantity,price)”,注意名为item的列在哪里! 进口mysql.connector在

def create_table():
  cur.execute("CREATE TABLE IF NOT EXISTS store " \
           "(id INT PRIMARY KEY, item VARCHAR(25), quantity INT, price REAL);")
  conn.commit()
  return

def insert(id, item, quantity, price):
  cur.execute("INSERT INTO store (id, item, quantity, price)" \
            "VALUES (%s, '%s', %s, %s)" % (id, item, quantity, price))
  conn.commit()
  return

#
conn = mysql.connector.connect(user="root",
   host='localhost',database='DO',port='3306')
cur = conn.cursor()

create_table
insert(50, 'test', 20, 10)
insert(51, 'test', 20, 10)
insert(52, 'test', 20, 10)
conn.close()

从MySQL

^{pr2}$

相关问题 更多 >