-
카테고리
-
세부 분야
데이터베이스
-
해결 여부
미해결
안녕하세요 강사님~
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에 데이터가 채워져있지 않은 상태였음에도 불구하고, 오류가 나는 이유가 무엇인지 궁금합니다.
긴 질문글 읽어주셔서 감사하고, 항상 양질의 강의 또한 감사합니다.
남은 하루도 좋은 시간되시길 바랍니다.
처음하는 SQL과 데이터베이스(MySQL) 부트캠프 [입문부터 활용까지] (업데이트)
실전 SQL 데이터 분석 연습: 집계 함수 익히고 실제 DB로 연습하기 (업데이트)
강의실 바로가기
답변을 작성해보세요.
1
잔재미코딩 DaveLee
지식공유자2020.04.11
안녕하세요. 양질의 강의라고 말씀해주셔서 감사합니다.
질문이 길어서, 제가 답변을 잘 하는 건지는 잘 모르겠어요.
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
감사합니다.
답변 1