- 错误信息**
SQL语法中有错误;请检查与您的MariaDB服务器版本对应的手册,以了解在第1行" % s"附近使用的正确语法
- MySQL数据库表**
CREATE TABLE `tblorders` (
`order_id` int(11) NOT NULL,
`order_date` date NOT NULL,
`order_number` varchar(50) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
ALTER TABLE `tblorders`
ADD PRIMARY KEY (`order_id`),
ADD UNIQUE KEY `order_number` (`order_number`);
ALTER TABLE `tblorders`
MODIFY `order_id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=4;
- 代码**
mydb = mysql.connector.connect(host = "localhost", user = "root", password = "", database = "mydb")
mycursor = mydb.cursor()
sql = "Select order_id from tblorders where order_number=%s"
val = ("1221212")
mycursor.execute(sql, val)
我错过什么了吗?
2条答案
按热度按时间nafvub8i1#
您必须传递一个列表或元组作为参数,但单个值的元组只是括号中的标量。
以下是一些确保
val
被解释为元组或列表的解决方法:这是Python的一个特点,我总是觉得很奇怪,但这是有道理的。
nvbavucw2#
如果你想插入数据,你必须修改你的SQL。使用
INSERT
代替SELECT
,如下所示:该语句将向表中添加新记录。此外,在MariaDB中,您需要使用**?,而不是%s**,后者适用于Mysql数据库。