使用Python在mysql中选择记录时出现问题



错误信息

你有一个错误的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)

我错过什么了吗?

必须传递列表或元组作为参数,但是单个值的元组只是括号中的标量。

以下是确保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])

相关内容

  • 没有找到相关文章

最新更新