꾸준하고 즐겁게

Python에서 MySQL 데이터 insert 할 때 변수처리하고 한꺼번에 쿼리 여러 줄 처리하기 본문

Database

Python에서 MySQL 데이터 insert 할 때 변수처리하고 한꺼번에 쿼리 여러 줄 처리하기

wj9183 2021. 5. 9. 17:08
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(dictionaryTrue)

    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