1
데이터를 삽입하는 테이블의 변수 이름을 동적으로 변경하고 싶습니다. 테이블 이름을 variable로 바꿉니다. 파이썬과 MySQL 커넥터 사용
이 현재 작동
,def dataEntry(subreddit, _title, _post_url, _imageURL):
cnx = mysql.connector.connect(**config)
c = cnx.cursor()
insert = ("""INSERT INTO FoodPorn
(subreddit, title, post_url, imageURL)
VALUES (%s, %s, %s, %s)""")
data_value = (subreddit, _title, _post_url, _imageURL)
c.execute(insert, data_value)
cnx.commit()
c.close()
cnx.close()
dataEntry("fake", "fake", "fake", "fake")
그러나 나는 시도하고이 경우 "FoodPorn"의 테이블 이름에 대한 동일한 작업을 수행하지만, 경우에 그러한 예 MachinePorn에서와 같이 동적 하나,
def dataEntry(subreddit, _title, _post_url, _imageURL):
cnx = mysql.connector.connect(**config)
c = cnx.cursor()
insert = ("""INSERT INTO subredditName
(subreddit, title, post_url, imageURL)
VALUES (%s, %s, %s, %s, %s)""")
data_value = ("MachinePorn", subreddit, _title, _post_url, _imageURL)
c.execute(insert, data_value)
cnx.commit()
c.close()
cnx.close()
dataEntry("fake", "fake", "fake", "fake")
나는이 오류가
는
mysql.connector.errors.ProgrammingError: 1146 (42S02): Table 'sytykr.subredditname' doesn't exist
이 내가이 방법을 수행 할 수 없습니다 믿고 날 리드하고 그래서 나는 하시다 uld님께 물어보고 싶은데 어떻게해야할까요? 매번 하드 코드하지 않고 결국 테이블의 변수 이름을 전달할 수 있습니다.
. 준비된 문에서 테이블 이름을 매개 변수화할 수 없습니다. 쿼리 문자열을 ('cnx.escape_string()'을 통해 이스케이프 처리 된) 테이블 이름과 직접 연결해야합니다. –
하지만 DB API v2.0을 준수하는 mysql.connector를 사용하고 있습니다. 왜 문자열을 수동으로 scape해야합니까? –
참조 http://stackoverflow.com/questions/11312737/can-i-parameterize-the-table-name-in-a-prepared-statement –