나는 사용자 입력을 체크 박스에서 얻고 MySQL 테이블에서 해당 행을 반환하는 웹 사이트를 가지고있다.Flask/MySQL WHERE IN 절이 단 하나의 엔트리와 작동하지 않는다
예를 들어 사용자는 몇 가지 색상을 선택할 수 있으며 웹 사이트는 해당 색상 인 표의 개체를 표시합니다.
문제는 사용자가 하나의 색만 선택하면 MySQL 쿼리가 제대로 만들어지지 않고 오류가 발생하는 것입니다.
import MySQLdb
db = MySQLdb.connect(host="...", user="...", port=..., db="...", passwd="...")
colors = ["red", "blue"]
cursor.execute("SELECT * FROM `objects` WHERE `color` IN %s",(colors,))
을 그리고이하지 않는 :
그래서이 작품 :
import MySQLdb
db = MySQLdb.connect(host="...", user="...", port=..., db="...",passwd="...")
colors = ["red"]
cursor.execute("SELECT * FROM `objects` WHERE `color` IN %s", (colors,))
이 문제를 해결하는 방법이 있나요 아래 colors
배열이 있습니다? 지금은 일시적으로 가짜 "색"(데이터베이스에 연결된 개체가없는 색)을 추가하고 있지만 이는 분명히 이상적인 솔루션이 아닙니다.
'IN'에는 대괄호 ... '(% s)'가 있어야합니다. –
@MarcB 다음과 같은 오류가 발생합니다. "1064"SQL 구문에 오류가 있습니다. ') 1'at " –
근처에있는 올바른 구문을 찾으려면 MySQL 서버 버전에 해당하는 설명서를 확인하십시오. MySQL이 보는 (서버 로그에서) 쿼리를 보는 데 도움이됩니다. 어쨌든이 대답은 도움이 될 것입니다 : http://stackoverflow.com/questions/4574609/executing-select-where-in-using-mysqldb –