Python 类似短语、sql、选择函数的语法错误

Python 类似短语、sql、选择函数的语法错误,python,sql,Python,Sql,我的代码是: sql_command='''SELECT Grade FROM GRADES where Student_number='''+str(id) sql_command+=''' And Course_ID LIKE'''+Course_code 其中,课程代码是一个给定的参数。所以基本上我是在两个条件下选择分数的。 一个是学生编号等于给定的id,课程id以给定的课程代码开始。 例如,课程id为'psyc11',课程代码为'psy' 您需要将第二个参数括在引号中,以便使用LIKE

我的代码是:

sql_command='''SELECT Grade FROM GRADES where Student_number='''+str(id)
sql_command+=''' And Course_ID LIKE'''+Course_code
其中,课程代码是一个给定的参数。所以基本上我是在两个条件下选择分数的。 一个是学生编号等于给定的id,课程id以给定的课程代码开始。
例如,课程id为'psyc11',课程代码为'psy'

您需要将第二个参数括在引号中,以便使用LIKE,因此:

sql_command = "SELECT Grade FROM Grades WHERE Student_number = " + str(id) +
              " AND Course_ID LIKE " + Course_code + "*'"
我选择在片段周围使用双引号来简化单引号的嵌入

你也可以考虑:

sql_command = "SELECT Grade FROM Grades WHERE Student_number = %d AND Course_ID LIKE '%s*'" % (id, Course_code)
鉴于:

Course_code = 'psy'
ID = 2334
两者都产生:

SELECT Grade FROM Grades WHERE Student_number = 2334 AND Course_ID LIKE 'psy*'

您在
后面缺少一个空格,如
。无论您在Python中使用什么样的SQL数据库API,都可能有一种将这些值作为参数绑定的方法,注入安全且优于串联。@Michael Berkowski thx,课程代码为psy,课程id列为psyc11。它说没有这样的psy列,因为这些是字符串,在SQL语句中需要单引号。您正在使用什么RDBMS以及您正在使用什么python模块来查询它?通过合理使用其参数化机制,解决了这些问题。(您对错误消息的描述隐约暗示可能是MySQL)@Michael Berkowski是的。我应该如何正确地进行参数化呢?如果不知道我问的其他问题,就无法回答这个问题。