错误信息
MySQL数据库表你有一个错误的SQL语法;查看手册对应于您的MariaDB服务器版本以使用正确的语法在第1行'%s'附近
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)
我错过什么了吗?
必须传递列表或元组作为参数,但是单个值的元组只是括号中的标量。
以下是确保val
被解释为元组或列表的一些变通方法:
sql = "Select order_id from tblorders where order_number=%s"
val = ("1221212",)
mycursor.execute(sql, val)
sql = "Select order_id from tblorders where order_number=%s"
val = ["1221212"]
mycursor.execute(sql, val)
这是Python的一个我总觉得奇怪的地方,但它还是有意义的。
如果你想插入数据,你必须修改你的SQL. 使用INSERT
代替SELECT
,如下所示:
INSERT INTO tblorders (order_number) VALUES ("122121");
语句将向表中添加新记录。此外,在MariaDB中,您需要使用?而不是%s
sql = "INSERT INTO tblorders (order_number) VALUES (?);"
val = "1231231"
mycursor.execute(sql, [val])