2013-02-02 1 views
1

DB-table에 유니 코드 문자 파일 이름을 저장하는 django에서 만든 webapp/webservice 메서드가 있습니다. 내가 제대로 이유가 무엇이든합니다 (DB에 저장되지 않는 일부 유니 코드와 charactered 파일 이름을 발견했기 때문에 나는 이런 식으로 일을 오전유니 코드 문자 파일 이름 SELECT SQL 매개 변수 문제

SubmissionContents(id=subid, filename=fn.decode('unicode_escape')).save() 

: 나는 views.py 스크립트에이 방법으로 그 일을하고있다 , 나는 아직도 모른다). 그리고 이것은 또한 stackoverflow thread/link에 대한 제안입니다 :

이제 백엔드에서 MySQLdb-python 모듈을 사용하여 DB에 대해 쿼리하는 일반 파이썬 스크립트가 있습니다. 내 쿼리는 다음과 같습니다 :

filename = (u"%s").encode('unicode_escape') 
cursor.execute('select * from `submissioncontents` 
       where `submissioncontents`.`filename` = "%s"' 
       % filename.decode('unicode_escape')) 

DB 테이블에 해당 값이 채워져 있어도 문제가 해결되지 않았습니다. 쿼리를 올바르게 수행하려면 어떻게해야합니까?

미리 감사드립니다.

+0

LIKE 검색을 수행 하시겠습니까? – sgeddes

+0

커서로 실행할 SQL 명령을 출력 할 수 있습니까? 나는 당신이 할 수 없을 수도 있지만 그것이 일치해야하는 행의 필드에서 값을 얻는다면 당신은 눈에 띄는 차이점을 인코딩하게 만들 것입니다. –

+0

기다려, 여기에 무슨 일이 일어나고 :'(u "% s"). encode ('unicode_escape')'? 실제로 파일 이름을 이스케이프 처리하기 전에 유니 코드로 포맷하는 것을 의미합니까? –

답변

0

Check right syntax :

cursor.execute('select * from `submissioncontents` 
       where `submissioncontents`.`filename` = %s' 
       , [ filename.decode('unicode_escape') ]) 

인용 문서 : 코드에 대한

cursor.execute("SELECT foo FROM bar WHERE baz = %s", [self.baz]) 

! "원시 쿼리에 서식 문자열을 사용하지 마십시오"