본문 바로가기
MySql

MySQL Python MySQL 이스케이프 특수 문자

by 베이스 공부 2021. 1. 7.
반응형

특수 문자로 MySQL에 문자열을 삽입하기 위해 파이썬을 사용하고 있습니다.

삽입 할 문자열은 다음과 같습니다.

macaddress_eth0;00:1E:68:C6:09:A0;macaddress_eth1;00:1E:68:C6:09:A1

다음은 SQL입니다.

UPGRADE inventory_server 
set server_mac = macaddress\_eth0\;00\:1E\:68\:C6\:09\:A0\;macaddress\_eth1\;00\:1E\:68\:C6\:09\:A1' 
where server_name = 'myhost.fqdn.com

업데이트를 실행할 때 다음 오류가 발생합니다.

ERROR 1064 (42000): 
You have an error in your SQL syntax; check the manual that corresponds to your 
MySQL server version for the right syntax to use near 'UPGRADE inventory_server 
set server_mac = 'macaddress\_eth0\;00\:1E\:68\:C6\:09\' at line 1

파이썬 코드 :

sql = 'UPGRADE inventory_server set server_mac = \'%s\' where server_name = \'%s\'' % (str(mydb.escape_string(macs)),host)
print sql

try:
    con = mydb.connect(DBHOST,DBUSER,DBPASS,DB);
    with con:
       cur = con.cursor(mydb.cursors.DictCursor)
       cur.execute(sql)
   con.commit()
except:
return False

이 텍스트를 원시적으로 삽입하려면 어떻게해야합니까?

 

해결 방법

 


다음과 같이하십시오.

sql = 'UPGRADE inventory_server set server_mac = %s where server_name = %s'

그때:

cur.execute(sql, macs, host)

이렇게하면 문자열을 문자열로 처리하고 MySQL 라이브러리가이를 인용하고 이스케이프하는 방법을 알아낼 수 있습니다.


 

참조 페이지 https://stackoverflow.com/questions/15798969

 

 

반응형

댓글