• 카테고리

    질문 & 답변
  • 세부 분야

    데이터베이스

  • 해결 여부

    미해결

강의를 보면서 크롤링 하고 데이터베이스에 담는 중 궁금한게 생겨서 질문 드립니다.

19.10.22 23:56 작성 조회수 99

0

먼저 좋은 강의 감사합니다.

강의 퀄리티에 비해 값이 너무 싼건아닌가 하는..... 물론 수강생 입장에서 매우 좋습니다 ㅎㅎㅎ

현재 크롤링 해서 크롤링 한 데이터를 딕셔너리 형태로 저장시켜 놓고

저장시킨 딕셔너리 형태를 이제 데이터베이스에 insert 하려고 하는데 자꾸 오류가 나는데 

curs.execute(sql,(ace,ase)) 이러한 형태로 저장은 힘든 건가요 ?

아니면 저부분이 아닌 다른 부분에서 정보가 잘못 된 것 일까요 ?

오류 구문 :     raise errorclass(errno, errval)

pymysql.err.InternalError: (1366, "Incorrect string value: '\\xEC\\xA4\\x91\\xEA\\xB5\\xAD' for column 'country' at row 1")

아래는 현재 코드입니다.

import requests
from bs4 import BeautifulSoup
import pymysql


bank_code = ('005','020','004')

for i in bank_code :
bank_codes = i

res = requests.get('https://www.mibank.me/exchange/bank/index.php?search_code=' + bank_codes)
soup = BeautifulSoup(res.text, 'html.parser')
soup2 = soup.find('table', class_ = 'table_style01 exchange_table')
countrys = soup2.select("tbody > tr > td:nth-of-type(2)")
exchange_rates = soup2.select("tbody > tr > td:nth-of-type(3)")

dic = {
ct.text : er.text for ct, er in zip(countrys, exchange_rates)
}




# MySQL Connection 연결
conn = pymysql.connect(host='', user='', password='',
db='bank_DB', charset='utf8')

curs = conn.cursor()

sql = "INSERT INTO hana_bank(country,exchange_rate) values (%s, %s)"

for dic_key,dic_val in zip (dic.keys(),dic.values()):
ace = dic_key
ase = dic_val
curs.execute(sql,(ace,ase))

답변 1

답변을 작성해보세요.

0

안녕하세요. 그렇게 말씀해주셔서 감사합니다. 좋은 강의를 좀더 저렴한 가격에 제공해서, 가능한 많은 분들이 들으셨으면 하고 있습니다. 많은 분들께 소개해주시면 너무 감사할 것 같습니다.

우선 작성하신 코드가 강의에서 다뤄진 코드는 아니고, 자체적으로 작성하신 코드라서, 해당 코드에 대해 분석이나 테스트를 하기는 무리가 있어서요. 일단 다음 코드 문법 자체가 문제가 있지는 않습니다.

curs.execute(sql,(ace,ase)) 

실제로 sql,(ace,ase) <-- 이 부분이 최종 SQL이 어떻게 되는지를 먼저 출력해본 후, 해당 SQL 구문을 mysql 터미널 환경등에서 실행해보셔서 해당 SQL 문에 문제가 없는지를 먼저 테스트하시면, 문제를 확인하시기 쉬우실 것 같습니다. SQL 테이블과, SQL 구문의 데이터 사이의 문제로 보여집니다. 어떻게 설정하셨는지등등에 따라 원인은 다양할 수 있을 것 같습니다.

마지막으로, 우선 강의 질문/답변이라서, 강의에서 다뤄진 코드/용어등에 대해 문의를 하는 것이 좀더 맞긴 해서요. 다른 분들의 코드를 분석하는 것은 무리가 있어서, 이 부분은 간곡히 양해를 부탁드립니다.

감사합니다.