2013-09-23 4 views
1

안녕하세요, 이미 파이썬을 통해 mysql 테이블에 항목이 있는지 확인하려고합니다. 이미 항목이 있는지 확인하기 위해 사용하는 키를 PID라고하며 ascii_bin 데이터 정렬을 사용합니다. 내 문제는 내가 같은 것을 시도 할 때이다. ...msqldb 쿼리가 대/소문자를 구분하지 않습니다.

q = """select * from table_name where PID = '%s'"""%("Hello") 
db = MySQLdb.connect("xxxx", "xxxx", "xxxx","temp",cursorclass=MySQLdb.cursors.DictCursor) 
cursor = db.cursor() 
res = cursor.execute(q) 
rowOne = cursor.fetchone() #fetches the row where pid = "hello" 

rowOne는 pid = hello 인 행이된다. 그러나 내가 sqlyog를 사용하고 쿼리를 실행하면 pid = Hello (대소 문자를 구분하는 쿼리로 올바르게 기능하는) 행을 제대로 출력합니다. 나는 대소 문자를 구별 (또는 민감한 강조)되지 않습니다 MySQL은 기본 문자열 비교 작업으로이 모듈

+1

기본적으로 대소 문자를 구분하지 않습니다. 대/소문자를 구분하려면 이진 비교를 사용하십시오. http://stackoverflow.com/questions/3936967/mysql-case-insensitive-select – alecxe

+0

내 질문에 @alecxe 이미 내 데이터 정렬이 ascii_bin이고 내 선택에서 대/소문자를 구분한다고 언급했습니다. . mysql에서이 작업을 수행하지만, mysqldb를 통해 시도해도 작동하지 않는다. 문제는 순전히 파이썬 – ZJS

답변

0

을 사용하고 이미 내 많은 코드로 제대로 작동 할 수있는 mysqldb 모듈을 얻을 수있는 방법을 찾고 있어요 : http://dev.mysql.com/doc/refman/5.0/en/case-sensitivity.html

당신이 열 및 라틴 문자 집합이 모두, 당신은 COLLATE 연산자를 사용할 수있는 문자열을 비교하는 경우 가지고 피연산자의 원인 예를 들어

:

당신은하지만, COLLATE을 사용하는 두 개의 쉬운 옵션이 있습니다 latin1_general_cs 또는 latin1_bin 데이터 정렬 :

또는 대소 문자로 열을 설정합니다

당신은 항상 대소 문자를 구분 방식으로 처리 될 열을 원하는 경우는, 경우 민감하거나 바이너리 데이터 정렬 선언을. 13.1.10 절. "CREATE TABLE 구문"을 참조하십시오.

+0

내가 내 질문에 언급 한대로 이진 데이터 정렬 ascii_bin 데이터 정렬을 사용하고 있습니다. 여기에있는 문제는 mysql이 아니라 pythons 모듈 mysqldb – ZJS

+1

와 관련이 있습니다. 검색어 'mysqldb collate latin2_bin'을 사용하여 검색어에 쿼리를 실행하면 어떻게됩니까? 이것은 재독성에있어서 이상하게 보입니다. – Matthew

+0

아니, 작동하지 않습니다. 이것은 mysqldb라는 mysql 문제가 아니다. 나는 mysql에서 완벽하게 작동하고있다. – ZJS