• sqlite란 1부

    2017. 6. 25. 18:34

    by. 위지원

    SQLite370.svg

    개발자리처드 힙
    발표일2000년 8월
    최근 버전3.19.2 / 2017년 5월 25일, 30일 경과[1]
    프로그래밍 언어C
    운영 체제크로스 플랫폼
    크기~275 kiB
    종류관계형 데이터베이스 (임베디드)
    라이선스퍼블릭 도메인[2]
    웹사이트

    http://sqlite.org/


    sqlite란?

    mysql이나 postgreSQL와 같은 dbms지만 서버가아니라 응용프로그램에 넣어 사용하는 비교적 가벼운데이터베이스

    api는 단순히 라이브러리를 호출하는 것만 있고,데이터를 저장하는데 하나의 파일만을 사용하는것이 특징


    데이터 타입


    파이썬 유형SQLite type
    NoneNULL
    intINTEGER
    longINTEGER
    floatREAL
    str (UTF8로 인코딩 됨)TEXT
    unicodeTEXT
    bufferBLOB


    사용방법


    ++ 다양한 모듈은 https://docs.python.org/2/library/sqlite3.html 에서 확인가능 ++

    1.connection database를 나타내는 객체를 생성. example.db 파일에 데이터가 저장됨

    저장된 데이터는 영구적이며 이후 세션에서도 사용 가능

    import sqlite3
    
    conn=sqlite3.connect("example.db")
    


    2.connection을 하고난뒤 cursor객체를 만들고 cursor객체의 execute()메서드를 이용해 쿼리를 날릴 수 있음

    c = conn.cursor() c.execute('''CREATE TABLE stocks (date text, trans text, symbol text, qty real, price real)''') c.execute("INSERT INTO stocks VALUES ('2006-01-05','BUY','RHAT',100,35.14)") conn.commit() conn.close()


    **commit

    database에서 transaction이란 논리적인 일의 단위를 말하는데 이러한 트랜잭션이 오류없이 실행되었따면 지금까지 실행한 모든작업을 '실제로' 수행하라는 명령어


    3.쿼리를날릴때 db-api 매개 변수 대체를 사용하는것이 좋은데 그 이유는 아래 만화를 참고


    symbol = 'RHAT' c.execute("SELECT * FROM stocks WHERE symbol = '%s'" % symbol) #이렇게하면 안된다 t = ('RHAT',) c.execute('SELECT * FROM stocks WHERE symbol=?', t) #이렇게 해야한다 print c.fetchone() purchases = [('2006-03-28', 'BUY', 'IBM', 1000, 45.00), ('2006-04-05', 'BUY', 'MSFT', 1000, 72.00), ('2006-04-06', 'SELL', 'IBM', 500, 53.00), ] c.executemany('INSERT INTO stocks VALUES (?,?,?,?,?)', purchases)

    ++코드설명++

    **execitemany를 이용하여 여러개의 쿼리를 한번에 날릴수 있음

    **fetchone()은 쿼리결과 값을 하나씩 받아오고 fetchall()을 사용하면 결과 목록을 가져옴



    sqlite3.complete_statement(sql)로 쿼리문이 ;으로 닫혀서 입력되었는지 확인할 수 있음

    import sqlite3
    
    con = sqlite3.connect(":memory:")
    con.isolation_level = None
    cur = con.cursor()
    
    buffer = ""
    
    print ("Enter your SQL commands to execute in sqlite3.")
    print ("Enter a blank line to exit.")
    
    while True:
        line = input()
        if line == "":
            break
        buffer += line
        if sqlite3.complete_statement(buffer):
            try:
                buffer = buffer.strip()
                cur.execute(buffer)
    
                if buffer.lstrip().upper().startswith("SELECT"):
                    print (cur.fetchall())
            except sqlite3.Error as e:
                print ("An error occurred:", e.args[0])
            buffer = ""
        else:
            print("쿼리문이 정확하지 않습니다")
    con.close()
    






    출처 url

    https://ko.wikipedia.org/wiki/SQLite

    https://docs.python.org/2/library/sqlite3.html

    http://m.blog.naver.com/woghdi8318/51124164

    '2017년 > Database' 카테고리의 다른 글

    DB Browser for SQLite  (0) 2017.07.05
    sas university edition을 사용해보자  (0) 2017.06.29
    sqlite란 2부  (0) 2017.06.29
    데이터 베이스 설계 1부  (0) 2017.06.26
    데이터 베이스 개요  (0) 2017.06.26