꾸준하고 즐겁게
Python에서 MySQL 데이터 insert 할 때 변수처리하고 한꺼번에 쿼리 여러 줄 처리하기 본문
728x90
이전 글에 이어지는 내용이다.
Python에서 MySQL 데이터 가져올 때 변수처리하는 법
이번엔 고양이 이름을 param이라는 변수에 따로 저장했다.
이 부분은 따로 설명할 건 없고, 이전 것과 비교를 해보는 것이 좋겠다.
먼저 하드코딩했을 때다.
파라미터를 변수 처리했을 때다.
if connection.is_connected() : cursor = connection.cursor(dictionary= True) query = """insert into cats (name, age) values ("정민근", 2);""" cursor.execute(query) connection.commit() |
if connection.is_connected() : cursor = connection.cursor(dictionary= True) query = """insert into cats (name, age) values (%s, 3);""" param = ("박석규", ) cursor.execute(query, param)
connection.commit() |
파라미터를 변수로 처리할 땐, 쿼리에서 변수 처리할 부분을 %s로 작성하고,
반드시 튜플로 저장해야한다.
여러개를 변수로 처리할 땐, 여러개 넣어주면 된다.
그리고 코드를 실행했다.
석규가 잘 추가된 것을 볼 수 있다.
석-하
insert 할 때, 쿼리 여러 줄 한 번에 처리하는 법
execute를 여러번 사용해도 안될 건 없지만, executemany 함수를 사용하면 간편하다.
이번엔 3마리의 고양이를 더 추가해보겠다.
insert into cats (name, age) values ("정신차려 이 각박한 세상 속에서", 42);
작성한 쿼리에 문제가 없는지 워크밴치에서 이미 테스트했던 코드다.
이걸 vscode에 가져온다.
-----------------------------------------------------------------------------------------
if connection.is_connected() :
cursor = connection.cursor(dictionary= True)
query = """insert into cats (name, age) values (%s, %s);"""
values = [("김선규", 5),
("안토니오", 3),
("말레피센트", 42)]
cursor.executemany(query, values)
connection.commit()
except Error as e :
print('디비 관련 에러 발생', e)
finally :
cursor.close()
connection.close()
print("MySQL 커넥션 종료")
if __name__ == '__main__':
main()
쿼리는 이전과 같이 작성하되 변수처리하고, 변수처리된 부분에 들어갈 값들을 튜플로 각각 저장한다.
execute 함수를 executemany 함수로 대체한다.
그리고 실행해보았다.
정상적으로 실행되었음을 확인할 수 있다.
728x90
'Database' 카테고리의 다른 글
Python에서 MySQL에 데이터 인서트하기 + insert문 제대로 사용했는데 DB에 저장이 안되는 경우 (0) | 2021.05.09 |
---|---|
전용 DB 유저 생성하고, Python에서 MySQL 커넥션 해보기 (0) | 2021.05.09 |
파이썬 MySQL 라이브러리 (0) | 2021.05.09 |