인프런 커뮤니티 질문&답변

허쿡님의 프로필 이미지
허쿡

작성한 질문수

[2024 리뉴얼] 처음하는 SQL과 데이터베이스(MySQL) 부트캠프 [입문부터 활용까지]

-------------------------------------------------------------------

함수 정의 질문

작성

·

173

0

안녕하세요.
 
[실전] 크롤링과 데이터베이스 - DB와 프로그래밍 코드 작성과 팁2
3분 58 초 부분 질문이 있습니다.
 
파이참 코드 상단에는 라이브러리를 호출해주고 그 아래에
save_data 함수를 정의하는데 save_data 에는 execute 매소드
가 사용되는데 .. 우선 접속 객체가 먼저 정의되어 있어야
쓸 수 있는 게 아닌가요?
 
질문
함수 ''선언''을 할 때는 특정 매소드와 해당 매소드를 사용하는
객체가 정의되어 있지 않아도 되는 건가요?
 
제가 생각한 것은 아래와 같이 접속 객체를 먼저 정의해 주어야
save_data 함수에서 execute,fetchone() 매소드
문제 없이 실행될 것이라고 생각했습니다.
 
obj = connect(host='localhost', port=3306, user='root', passwd='oldcold12!!!', db='bestproducts', charset='utf8')
cus = obj.cursor()

def save_data(item_info):
print(item_info)
sql = """SELECT COUNT(*) FROM items WHERE item_code =""" + item_info['item_code']
cus.execute(sql)
result = cus.fetchone()
.
.
.

 

답변 2

0

허쿡님의 프로필 이미지
허쿡
질문자

빠른 답변 감사합니다!

0

아하 기본적으로는 지적하신 부분은 맞습니다.

원래대로 한다면, cursor 를 먼저 선언한 후, 함수 내에서 해당 cursor 를 전역 변수를 가져와서 쓰는 것처럼 쓰는 것이 맞긴 해요. 그런데, 파이썬에서 해당 함수 선언 후, 실제 함수 코드 실행은 해당 함수를 호출 했을 때, 비로소 실행이 되면서, 필요한 변수를 해당 라인 실행시 처리하니까요. 함수 호출 전에만 cursor 변수가 선언되어 있다면, 큰 문제는 없습니다.

 

허쿡님의 프로필 이미지
허쿡

작성한 질문수

질문하기