2012-06-22 2 views
0

데이터베이스로 작업 중이며 column_x에서 일부 변수가 NULL입니다. 누군가가 이것을 좋아하지 않으므로 이것을 '없음'으로 변경하기로 결정했습니다. 지금은 Python으로 그것을 변경하려면 다음 명령을 사용 :SQL 변수에 따옴표가 누락되었습니다.

query = "update stone set results = 'None' where results is null;" 

을하지만 수행 할 때

query = "SELECT * FROM stone where part = 'ABC';" 

을 나는 'X', 'Y', 'Z'없음 '출력을 얻을 는 '

하지만 수행 할 때

query = "SELECT * FROM stone where part = 'ABC' and results = 'None';" 

나는 (가) 반환받을. 이는 '없음'이 존재하지 않기 때문일 수 있습니다. 그러므로 짧은 질문은, 어떻게 파이썬을 통해 없음 -> '없음'으로 바꿀 수 있습니까?

+0

어떤 데이터베이스를 사용하고 있습니까? –

+0

표준 MySQL – Jasper

+0

* 항상 * 귀하의 패턴 ('ABC'및 '없음')이 될 것입니까? 매개 변수를 사용하면이 문제를 해결하는 데 도움이됩니다. 또한 'None'문자열을 올바르게 이스케이프 처리하고 있는지 확인하십시오. 마지막으로 데이터베이스에서이 쿼리를 직접 실행하여 검색 조건에 해당하는 결과 집합이 있는지 * 확인할 수 있습니다. – swasheck

답변

0

아무도 없음을 말하면 null인지 확실하지 않았습니다. 당신이 null 의미 없음을 목적으로하지 않는 경우 당신이 (MYSQL)과 같이 사용할 수 있습니다

SQL을 = "UPDATE 돌 세트 결과 = 결과가 null \ '없음 \'" 커서 = conn.Execute ($의 SQL) 로우 =의 cursor.Affected_Rows() Oracle의

이 SQL 실행 :

SQL = "UPDATE 돌 세트 결과 = '없음'여기서 결과 = '없음'" 커서 = conn.Execute ($ sql) rows = cursor.Affected_Rows()

MYSQL, 당신은 진드기를 피해 백 슬래시를 사용해야합니다 -

SQL 같은 것을 = "UPDATE 돌 세트 결과 = \ '없음 \'여기서 결과 = '없음'" 커서 = conn.Execute ($의 SQL) 행의 =의 cursor.Affected_Rows()

도 참조 http://phplens.com/lens/adodb/adodb-py-docs.htm http://www.codersrevolution.com/index.cfm/2008/7/13/Just-when-you-felt-safe-SQL-Injection- and-MySQL

+0

정확하게 파이썬에서와 똑같이 작동하는지 모르겠다. 이제 테스트 케이스로 사용했다. "결과 세트 '= None2'where results = 'None';" 그러나 변수 값을 변경하지 않습니다 ... – Jasper

+0

당신이 아무 것도 말하지 않을 때 당신이 null을 의미하는 경우 확실하지 않았습니다?None을 null로 지정했다면 다음과 같은 것을 사용할 수 있습니다. (MYSQL) : sql = "결과가 null 인 경우 결과가 \ '없음 \'결과가 null 인 경우"cursor = conn.Execute ($ sql) rows = cursor. Affected_Rows() –

+0

내가 지금 한 것은 다음과 같다. NULL을 없음으로 변경했지만 NULL에서 None으로 변경된 변수에 대한 select 문을 따옴표가 없으므로 None은 'None'과 같지 않으므로 찾을 수 없다. SELECT * FROM stone where result = 'None'... 그리고 결과 = SQL은 허용하지 않으므로 아무 것도 작동하지 않습니다. 나는 아무도 다른 것을 통해 다른 것으로 바꾸려고 시도했다 ... "석상 세트 결과 = 'None2'결과 = '없음';" 하지만 더 이상 바뀌지 않을거야 ... 이상한 ... – Jasper