JBS*_*JBS 3 python mysql command-line mysql-connector
此脚本用作命令行前端,以将记录添加到本地托管的MySQL数据库.
我收到此错误:
mysql.connector.errors.ProgrammingError: 1054 (42S22): Unknown column 'watermelon' in 'field list'
但西瓜是我想要进入的价值,而不是列名!
这是脚本:
#! /usr/bin/python
#use command line as front end to enter new rows into locally hosted mysql database
import mysql.connector
#create inputs
new_fruit = raw_input('What fruit do you want to add? ')
new_fruit_type = raw_input('Which type of ' + new_fruit + '? ')
#connect to dbase
conn = mysql.connector.connect(user='root', password='xxxx', database='play')
#instansiate cursor
cursor = conn.cursor()
#define sql statement
add_record = "INSERT INTO fruit (name, variety) VALUES (%s, %s)" % (new_fruit, new_fruit_type)
#execute sql
cursor.execute(add_record)
#close out
conn.commit()
cursor.close()
conn.close()
Run Code Online (Sandbox Code Playgroud)
和表架构:
mysql> describe fruit;
+---------+----------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------+----------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | char(30) | YES | | NULL | |
| variety | char(30) | YES | | NULL | |
+---------+----------+------+-----+---------+----------------+
3 rows in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)
"INSERT INTO fruit (name, variety) VALUES (%s, %s)" % ("watermelon", "melon")
Run Code Online (Sandbox Code Playgroud)
字面上变成了
INSERT INTO fruit (name, variety) VALUES (watermelon, melon)
Run Code Online (Sandbox Code Playgroud)
取而代之的字符串,watermelon并且melon是列.要解决这个问题,请在您的周围加上引号%s.
"INSERT INTO fruit (name, variety) VALUES ('%s', '%s')" % (new_fruit, new_fruit_type)
Run Code Online (Sandbox Code Playgroud)
但是,您应该将其运行为:
cursor.execute("INSERT INTO fruit (name, variety) VALUES (%s, %s)", (new_fruit, new_fruit_type));
Run Code Online (Sandbox Code Playgroud)
请注意,我们删除了周围的引用,%s并将变量作为方法的第二个参数传递execute.Execute防止从变量中注入sql以及用引号包装字符串.
有关更多信息,请参阅http://mysql-python.sourceforge.net/MySQLdb.html#some-examples
| 归档时间: |
|
| 查看次数: |
6821 次 |
| 最近记录: |