pymysql 자리 표시자 숫자와 문자열 구분
결론
Python에서 mysql을 사용할 때 자리 표시자에 걸려 넘어졌기 때문에 조사해 봤습니다.
결과는 제목과 같다.
직관적으로
%d
수치를 사용했지만 전체%s
가 좋았고 수치는 할당액에 의해 전개되지 않았다.거치다
이런 코드로 삽입을 실행하면
import pymysql as pm
import traceback
DATABASE = {
'host': 'localhost',
'db': 'test',
'user': 'root',
'password': 'test',
'port': 3306,
'cursorclass': pm.cursors.DictCursor
}
con = pm.connect(**DATABASE)
try:
with con.cursor() as cur:
sql = """
insert into corporation (id, name)
values (%d, %s)
;
"""
cur.execute(sql, (1,'テスト会社'))
con.commit()
except:
traceback.print_exc()
con.rollback()
finally:
con.close()
'%d 수치 넣기, 문자열 아님 요카스'인터넷 Google이라는 욕을 먹었으니까.issue에 대답이 적혀 있습니다.
자리 표시자는
%s
일 수 있으며 수치나 문자열을 적절하게 펼칠 수 있다고 합니다.TypeError: %i format: a number is required, not str #329
Traceback (most recent call last):
File "<ipython-input-4-84616a96211d>", line 21, in <module>
cur.execute(sql, (1,'テスト会社'))
File "/home/sysman/.pyenv/versions/anaconda3-5.3.1/envs/script/lib/python3.7/site-packages/pymysql/cursors.py", line 168, in execute
query = self.mogrify(query, args)
File "/home/sysman/.pyenv/versions/anaconda3-5.3.1/envs/script/lib/python3.7/site-packages/pymysql/cursors.py", line 147, in mogrify
query = query % self._escape_args(args, conn)
TypeError: %d format: a number is required, not str
문의
%d
의 지방이 %s
로 변경되었는데 디버거로 확인한 결과 다음과 같이 수치가 수치로 전개되어 대단하다고 생각합니다.초등학생Reference
이 문제에 관하여(pymysql 자리 표시자 숫자와 문자열 구분), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/syamagami666/items/d18e6adaeed7a96f3cf0텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)