ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Python과 SQLite3를 사용해 DB만들기
    💻 프로그래밍/Python 2017. 10. 25. 23:56

    안녕하세요!! 코딩하는 JAY입니다.


    오늘은 Python과 SQLite3를 사용하여 간단한 DB를 만들어 보겠습니다.


    먼저 Python 가상환경에 접속한다음 SQLite 명령어로 DB를 생성합니다.


    sqlite3 'DB이름'


    DB가 제대로 생성되었으면 자신이 원하는 테이블 내용을 추가합니다. 테이블 추가는 SQL쿼리문을 찾아보시길 바랍니다.


    (DB 생성 후, 테이블 내용 추가)


    (제대로 생성된 DB와, 테이블 내용)


    다음은 Python 으로 프로그램을 만들어 테이블에 값을 추가해보도록 하겠습니다.


    저는 텍스트 파일을 읽어 DB에 값을 입력하도록 하였습니다.


    (DB 테이블 형식에 맞게 텍스트파일에 데이터 저장)


    일단, 텍스트 파일을 읽어 2차원 리스트로 저장하겠습니다.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    = open('dbText.txt''r')
     
    matrix =[[0]*3 for row in range(4)]
     
    tempFile = f.read().splitlines()
    print(tempFile)
     
    for i, tf in enumerate(tempFile):
        print(str(i) + ': ' + tf)
        for j, saveFile in enumerate(tf.split()):
            matrix[i][j] = saveFile
            print(str(j) + ': ' + saveFile)
     
    print(matrix)
    f.close()
     


    코드를 보시면 첫번째로 read().splitlines() 함수를 이용해 전체적으로 읽은 파일의 내용을 line 단위로 쪼개 리스트로 저장합니다.


    두번째로는 line으로 쪼개진 내용의 리스트를 split() 함수로 다시한번 쪼갠다음 2차원 리스트에 저장해줍니다.


    2차원 리스트에 값을 저장했으면 이제 DB에 값을 저장하는 함수를 만들어 보겠습니다


    saveDBtable(db, data)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    def saveDBtable(db, data) :
        conn = sqlite3.connect(db)
        cur = conn.cursor()
     
        sql = "insert into customer(name,category,region) values (?, ?, ?)"
        cur.executemany(sql, data)
     
        conn.commit() # 트랜젝션의 내용을 DB에 반영함
        conn.close()

    여기까지만 하면 DB를 만들고 데이터를 저장하는 것은 끝입니다. 추가로 DB를 읽어 출력해보는 함수도 만들어 보겠습니다.


    viewDBdata(db, table)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    def viewDBdata(db, table) :
        #SQLite DB 연결
        conn = sqlite3.connect(db)
     
        # Connection 으로부터 Cursor 생성
        cur = conn.cursor()
     
        # SQL 쿼리 실행
        query = "select * from {0}".format(table)
        cur.execute(query)
     
        # 데이타 Fetch
        rows = cur.fetchall() # 모든 데이터를 한번에 클라이언트로 가져옴
        for row in rows :
            print(row)
     
        # Connection 닫기
        cur.close()

    DB에 값이 정말 제대로 저장되었는지 확인해보도록 하겠습니다.




    확인결과 DB에 제대로 값이 저장되었습니다. (참 쉽쥬~??!!:D)


    아래는 전체 Python코드입니다.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    import sqlite3
     
    def viewDBdata(db, table) :
        #SQLite DB 연결
        conn = sqlite3.connect(db)
     
        # Connection 으로부터 Cursor 생성
        cur = conn.cursor()
     
        # SQL 쿼리 실행
        query = "select * from {0}".format(table)
        cur.execute(query)
     
        # 데이타 Fetch
        rows = cur.fetchall() # 모든 데이터를 한번에 클라이언트로 가져옴
        for row in rows :
            print(row)
     
        # Connection 닫기
        cur.close()
     
    def saveDBtable(db, data) :
        conn = sqlite3.connect(db)
        cur = conn.cursor()
     
        sql = "insert into customer(name,category,region) values (?, ?, ?)"
        cur.executemany(sql, data)
     
        conn.commit() # 트랜젝션의 내용을 DB에 반영함
        conn.close()
     
    if __name__ == '__main__':
        f = open('dbText.txt''r')
     
        #matrix = [[0 for col in range(10)] for row in range(10)]
        matrix =[[0]*3 for row in range(4)]
     
        tempFile = f.read().splitlines()
     
        for i, tf in enumerate(tempFile):
            for j, saveFile in enumerate(tf.split()):
                matrix[i][j] = saveFile
     
        f.close()
     
        # DB에 테이블 입력
        saveDBtable('testDB.db', matrix)
     
        # DB에 저장되어 있는 테이블값 출력
        viewDBdata('testDB.db''customer')

    이상으로 오늘의 포스팅을 마치도록 하겠습니다.!! 모두 즐거운 코딩하세요!:D


    카카오톡 이모티콘에 대한 이미지 검색결과

    댓글

운동하는 개발자 JAY-JI