2017-05-12 1 views
0

파이썬을 사용하여 MySql에 문자열을 삽입하려고합니다. 가끔 문자열에 몇 개의 세미콜론이 있습니다.파이썬을 사용하여 MySQL의 문자열에서 세미 콜론을 무시하는 방법

이로 인해 문자열의 일부만 삽입됩니다. 문자열을 이스케이프하려고 시도했지만 도움이되지 않습니다.

도움말 엄청난 도움이 될 것이다 "세계 안녕하세요"내가 위의 코드를 삽입하면

예제 코드는 "안녕하세요"대신 단지 삽입,

string = "Hello; World" 
string = string.replace("'","''") //this is done incase i have "'" in a different scenario 
string = re.escape(string) 

update table set column = '"+string+"'; 

아래로 이동합니다.

+3

'string'을 변수 이름으로 사용하는 것은 나쁜 형태입니다. – Ludisposed

+0

쿼리 문자열을 monging하는 것이 아니라 Python에서 쿼리를 작성할 때 매개 변수를 사용하십시오. –

+0

세미 콜론을 테이블 열에 삽입해야합니다. 따라서 세미 콜론을 제거 할 수 없습니다. –

답변

1

당신은 DB API를 올바른 방법으로 사용 (자리하고 명시 적 매개 변수를 사용하여)이 문제가 안 :

>>> sql = "update auth_user set last_name = %s where id=%"; 
>>> args = ("FOO;BAR", 1) 
>>> c.execute(sql, args) 
>>> c.execute("select last_name from auth_user where id=1") 
1L 
>>> c.fetchone() 
(u'FOO;BAR',) 

뿐만 아니라이 제대로 인수를 이스케이프 처리됩니다, 그러나 그것은 또한 보호 할 것 당신 sql injections에서.

관련 문제