• 카테고리

    질문 & 답변
  • 세부 분야

    데이터베이스

  • 해결 여부

    미해결

안녕하세요 강사님~

20.04.08 18:15 작성 조회수 154

0

안녕하세요 강사님~

강의를 듣다가 모르는 부분이 있어서 질문을 올리게되었습니다.

패턴으로 익히는 파이썬과 MySQL - 데이터 입력과 검색  강의에서 반복문을 활용한 부분입니다.

import pymysql

 

db = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='funcoding', db='ecommerce', charset='utf8')

 

cursor = db.cursor()

 

for index in range(10):

    product_code = 215673140 + index + 1

    sql = """INSERT INTO product VALUES(

    '""" + str(product_code) + """', '스위트바니 여름신상5900원~롱원피스티셔츠/긴팔/반팔', 23000, 6900, 70, 'F'); """

    print (sql)

    cursor.execute(sql)

 

db.commit()

db.close()

강사님이 작성하신 위 코드 중

 VALUES(

    '""" + str(product_code) + """', '스위트바니 여름신상5900원~롱원피스티셔츠/긴팔/반팔', 23000, 6900, 70, 'F'); """ 

이 부분에서  '""" + str(product_code) + """' 이 앞뒤 데이터와 연결되는 형태를 가진 것도 아닌데 

1) 왜 str(product_code) 앞 뒤에 + 를 써주셨는지 모르겠습니다. (참고로, +가 없이 실행 시 오류가 났습니다.)

또한, 강사님의 파이썬 강의를 수강을 한 상태이기 때문에

""" """ 가 문자열이 길어 row를 바꿔 작성해줘야할 때 쓴다고 알고있습니다. 그런데,

2) product_code 변수가 row를 바꿔줄만큼 길지도 않고, 데이터타입인 varchar(20)에 들어갈 수 있는 크기인데 """ """ 를 써야하는지 모르겠습니다. (참고로, 따옴표 하나로 실행 시 오류가 났습니다.)

마지막으로,  product_code 변수를 만들 때

product_code = 215673140 + index + 1 를

product_code = 215673140 + index 로 선언하면 primary key와 관련한 오류가 발생하는 걸 알았습니다.

3) 강사님과 달리 table에 데이터가 채워져있지 않은 상태였음에도 불구하고, 오류가 나는 이유가 무엇인지 궁금합니다. 

긴 질문글 읽어주셔서 감사하고, 항상 양질의 강의 또한 감사합니다. 

남은 하루도 좋은 시간되시길 바랍니다.

 

답변 1

답변을 작성해보세요.

1

안녕하세요. 양질의 강의라고 말씀해주셔서 감사합니다.

질문이 길어서, 제가 답변을 잘 하는 건지는 잘 모르겠어요.

1) SQL 구문을 프로그래밍으로 만들기 위해, SQL 구문을 문자열 형태로 만들었어요. 그 문자열 안에 특정 변수 값이 들어가야 하는데, 문자열 과 변수를 붙이려면 + 을 사용해서 문자열 + 문자열 변수 + 문자열 과 같이 붙일 수 있습니다. 그런데 중간에 들어간 값이 문자열 변수가 아닌, 숫자 타입일 경우를 대비해서 str(변수) 를 사용해서 문자열 변수로 만들어준 것입니다.

2) """ 로 써도 되고, " 으로 써도 됩니다. 이 부분은 선호의 차이라고 볼 수 있습니다. """ 으로 쓰면 여러 줄에 걸쳐서 문자열을 만들때 유용하기 때문에, 일괄적으로 """ 으로 썼습니다.

3) 반복문에서 index는 0부터 시작하기 때문에 index + 1을 하였구요. 본래 강의에서 설명드리면서 사용한 코드들은 해당 테이블 스키마에 product_code 관련 필드가 unique 값이어야 하고, 심지어 foreign key로 다른 테이블과  연결될 수 있습니다. 이런 제약 조건들 때문에, 해당 데이터를 변경하여 넣었을 경우, 제약조건에 걸려서 에러가 난 것으로 이해합니다. 

1번 같은 경우는 아무래도 파이썬 문법과 관련이 있는데, 관련 다음 강의에 효과적으로 연습하고, 파이썬 기본을 쌓을 수 있도록 모아놓아서, 이 강의도 한번 참고하시면 좀더 좋을 것 같습니다. 3번은 해당 테이블의 스키마와 관련 강의를 다시 한번 보시면 좋을 것 같습니다.

https://www.inflearn.com/course/Python-crawling-basic

감사합니다.