[PYTHON] MySQL 용 이스케이프 문자열 파이썬
PYTHONMySQL 용 이스케이프 문자열 파이썬
파이썬과 MySQLdb를 사용하여 웹 페이지를 다운로드하고 데이터베이스에 저장합니다. 문제는 제대로 이스케이프 처리되지 않았기 때문에 복잡한 문자열을 데이터베이스에 저장할 수 없다는 것입니다.
파이썬에서 MySQL 용 문자열을 이스케이프 (escape) 할 수있는 함수가 있습니까? 나는 '' '(트리플 간단한 따옴표)와 "" "로 시도했지만 작동하지 않았습니다. PHP가 mysql_escape_string ()을 가지고 있고, Python에서 비슷한 것을 알고 있습니까?
감사.
해결법
-
==============================
1.
conn.escape_string()
MySQL C API 함수 매핑을 참조하십시오 : http://mysql-python.sourceforge.net/MySQLdb.html
-
==============================
2.자신의 구현을 사용하여 SQL 쿼리 문자열을 작성하는 대신 MySQLdb 라이브러리가 실제로이 작업을 수행합니다.
자신의 구현을 사용하여 SQL 쿼리 문자열을 작성하는 대신 MySQLdb 라이브러리가 실제로이 작업을 수행합니다.
하지 마십시오 :
sql = "INSERT INTO TABLE_A (COL_A,COL_B) VALUES (%s, %s)" % (val1, val2) cursor.execute(sql)
해야 할 것:
sql = "INSERT INTO TABLE_A (COL_A,COL_B) VALUES (%s, %s)" cursor.execute(sql, (val1, val2))
-
==============================
3.
>>> import MySQLdb >>> example = r"""I don't like "special" chars ¯\_(ツ)_/¯""" >>> example 'I don\'t like "special" chars \xc2\xaf\\_(\xe3\x83\x84)_/\xc2\xaf' >>> MySQLdb.escape_string(example) 'I don\\\'t like \\"special\\" chars \xc2\xaf\\\\_(\xe3\x83\x84)_/\xc2\xaf'
-
==============================
4.특수 문자의 해석을 제거하려면 sqlalchemy의 text 함수를 사용하십시오.
특수 문자의 해석을 제거하려면 sqlalchemy의 text 함수를 사용하십시오.
아래 함수 텍스트 ( "your_insert_statement")의 사용에 유의하십시오. 그것이하는 것은 sqlalchemy에 전달 된 문자열의 모든 questionmarks와 퍼센트 기호가 리터럴로 간주되어야 함을 의미합니다.
import sqlalchemy from sqlalchemy import text from sqlalchemy.orm import sessionmaker from datetime import datetime import re engine = sqlalchemy.create_engine("mysql+mysqlconnector://%s:%s@%s/%s" % ("your_username", "your_password", "your_hostname_mysql_server:3306", "your_database"), pool_size=3, pool_recycle=3600) conn = engine.connect() myfile = open('access2.log', 'r') lines = myfile.readlines() penguins = [] for line in lines: elements = re.split('\s+', line) print "item: " + elements[0] linedate = datetime.fromtimestamp(float(elements[0])) mydate = linedate.strftime("%Y-%m-%d %H:%M:%S.%f") penguins.append(text( "insert into your_table (foobar) values('%%%????')")) for penguin in penguins: print penguin conn.execute(penguin) conn.close()
from https://stackoverflow.com/questions/3617052/escape-string-python-for-mysql by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] 어떻게 루프에서 파이썬 목록에서 항목을 제거하려면? [복제] (0) | 2018.10.12 |
---|---|
[PYTHON] numpy.timedelta64 값에서 일 추출 (0) | 2018.10.12 |
[PYTHON] 파이썬의 os.makedirs가 내 경로의 "~"을 이해하지 못합니다. (0) | 2018.10.12 |
[PYTHON] 공통 요소를 공유하는 목록 병합 (0) | 2018.10.11 |
[PYTHON] Pandas는 여러 열에 외부 데이터 프레임을 여러 개 결합했습니다. (0) | 2018.10.11 |