2017-02-16 2 views
2

pymssql을 사용하여 데이터베이스에 연결하고 있습니다. 그 데이터베이스에는 마틴에 64 개의 문자가있는 열 (col라고 부름)이있는 테이블이 있습니다. (예 : "John "). 이제 데이터베이스에서 John을 찾고 싶습니다. 나는 LIKE을 사용해 보았습니다.매개 변수의 미확인 수에 대해 LIKE 및 %를 pymssql과 함께 사용하는 방법은 무엇입니까?

cursor.execute("SELECT * FROM table WHERE col LIKE 'John%' ") // gives perfect results 

을하지만 난 그것을 %s을 사용하려고 할 때이 전혀 일치하지 보인다 : 내가 이름을 하드 코딩 할 때 완벽하게 작동합니다.

cursor.execute("SELECT * FROM table WHERE col LIKE '%s%' ",(0,"John")) // gives Nothing 
cursor.execute("SELECT * FROM table WHERE col LIKE '%s%' ",{0:"John"}) // gives SQL "Incorrect syntax" error 
cursor.execute("SELECT * FROM table WHERE col LIKE '%s%' " % {0:"John"}) // gives unsupported format error 

것은 내가이 일 것 단 하나의 컬럼에 맞게 원하는 경우

cursor.execute("SELECT * FROM table WHERE col LIKE '%s%' ", "John") // gives all Johns 

을하지만 열 예측할 수에 일치합니다. 최종 쿼리가 어떻게 생겼는지를 볼 수있는 방법이있어서 직접 디버깅을 시도 할 수 있습니다. 아니면 다른 매개 변수를 사용하는 방법을 알고 계십니까? 을 찾은 후 here 튜플 배열을 사용해야하지만 작동하도록 만드는 방법을 찾을 수 없습니다. 내가

cursor.execute("SELECT * FROM table WHERE col LIKE '{0}%' ".format("John")) 

이상 올바르게 사용하여 매개 변수 "지연되고 있다면

답변

2

시험해보기 :

cursor.execute("SELECT * FROM table WHERE col LIKE %s ", "John%") 
0

내가 format()를 사용하여이 쓰기 것입니다 미리 감사합니다 :

cursor.execute("SELECT * FROM table WHERE col LIKE '%s%' ", ("John")) 

나는 문제가 생각 (0, "John")은 하나가 아니라 두 개의 매개 변수로 해석됩니다.