ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Python, Sqlite] 딕셔너리(사전형)로 row 바로 받기
    Python/이것저것 파이썬 2021. 12. 23. 13:32
    반응형

    [Python, Sqlite] 딕셔너리(dict, dictionary)로 row 바로 받기

    https://docs.python.org/3/library/sqlite3.html#row-objects

    import sqlite3
    
    con = sqlite3.connect(':memory:')
    cur = con.cursor()
    cur.execute(
        '''
        create table stocks
        (date text, trans text, symbol text, qty real, price real)
        '''
    )
    cur.execute(
        '''insert into stocks values ('2006-01-05','BUY','RHAT',100,35.14)'''
    )
    con.commit()
    cur.close()

    con.row_factory = sqlite3.Row
    을 이용하면
    값을 튜플과 딕셔너리로 선택해서 받을 수 있다. ㄷㄷㄷ

    row.factory를 사용하지 않으면,
    튜플이 담긴 리스트가 들어온다. 

    콘솔에서 비교해 보라...

    con.row_factory = sqlite3.Row
    cur = con.cursor()
    cur.execute('select * from stocks')
    # <sqlite3.Cursor object at 0x7f4e7dd8fa80>
    r = cur.fetchone()
    print(type(r))
    # <class 'sqlite3.Row'>
    print(tuple(r))
    # ('2006-01-05', 'BUY', 'RHAT', 100.0, 35.14)
    print(len(r))
    # 5
    print(r[2])
    # 'RHAT'
    print(r.keys())
    # ['date', 'trans', 'symbol', 'qty', 'price']
    print(r['qty'])
    # 100.0
    for member in r:
        print(member)
    # 2006-01-05
    # BUY
    # RHAT
    # 100.0
    # 35.14

     

    다른 DB에도 이와 유사한 기능이 있으니 참고하시길... 
    mySQL에서는 pymysql.cursors.DictCursor

    반응형
Designed by Tistory.