Python과 SQLite로 실현되는 로컬로 간편한 SQL 환경 작성술

소개


  • 로컬에있는 CSV (or TSV) 파일, 키 열로 JOIN하거나 중복 확인 등을 원합니다 ...
  • 그러나 자유롭게 사용할 수있는 DB는 없고 ...
  • 거기까지 큰 데이터도 아니기 때문에, 쉬운 방법 없을까...

  • 이러한 일로 고민의 당신에게, SQLite라고 하는 DB를 사용해, 로컬로 간단하게 DB를 세워 데이터를 임포트 해 SQL을 발행할 수 있는 방법을 안내합니다.

    ※텍스트 파일을 임포트하는 방법에 대해서는 이하의 기사에서 소개!
    파이썬에서 CSV, TSV 파일을 SQLite로 가져 오는 방법

    SQLite는 무엇입니까?




  • 설치가 쉽고 가벼운 DBMS
  • 임베디드 시스템에도 자주 발생합니다. IoT와 궁합 Good
  • Django와 같은 웹용 DB로도 사용되는 것
  • PostgreSQL 및 MySQL과 같은 주요 DBMS와 기대되는 역할이 다릅니다
  • Python에 표준 장착

  • 그래! 이 SQLite는 Python을 설치할 때 이미 사용할 수 있습니다.
    그래서, 여기에서는 Python을 사용하여 로컬로 간편한 DB를 만들어 SQL을 무제한으로 만드는 방법을 소개합니다!
    (아래는 Python3.7이 로컬에 있다고 가정합니다. Python3 시스템이라면 사용할 수 있어야합니다)

    기본 사용법



    작성부터 액세스까지



    우선은 DB의 작성으로부터 액세스, 절단까지의 조작 방법 일람.

    connect.py
    import sqlite3
    
    # 接続先となるDBの名前。'/home/user/database.db'といった表現方法も可能。
    dbname = 'database.db'
    
    # コネクタ作成。dbnameの名前を持つDBへ接続する。
    conn = sqlite3.connect(dbname)
    cur = conn.cursor()
    
    # ここから好きなだけクエリを打つ
    cur.execute('create table students(id integer, name text);')
    
    # 処理をコミット
    conn.commit()
    
    # 接続を切断
    conn.close()
    

    DB에 액세스했을 때, 만약 가리키기에 DB파일이 없었을 경우 자동적으로 DB가 작성됩니다.

    "DB가 생성된다"는 것은 SQLite용 바이너리 파일이 생성된다는 것을 의미합니다. 즉 접속처가 되는 DB는 단순한 파일이며, 접속처의 표현 방법은 패스로 그 파일의 위치를 ​​표현하는 것이 됩니다.

    이것은 파일을 그대로 이동(mv)이나 복제(cp)하면 어디서나 데이터를 운반할 수 있다는 것입니다.

    확장자는 무료이지만 여기에서는 관례에서 ".db"를 사용하고 있습니다.

    테이블 조작 방법



    ctl1.py
    # CREATE TABLE
    cur.execute('create table students(id integer, name text, class text)')
    
    # 列追加
    cur.execute('alter table students add column blood_type text')
    
    # 行追加
    cur.execute("insert into students values(1, 'Mike', 'Moon', 'B')")
    
    # 連続したレコードの追加
    students_data = [(2, 'Bob', 'Song', 'A'),
                    (3, 'Gonzalez', 'Star', None)]
    cur.executemany("insert into students values (?, ?, ?, ?)", students_data)
    
    # テーブル消去
    cur.execute("drop table students")
    

    executemany 메소드는 편리합니다. 위의 샘플에서는 튜플이 들어간 1차원 배열입니다만, 2차원 배열에서도 마찬가지로 인서트 할 수 있습니다.
    (Python상에서의 처리 결과를 그대로 흘려 넣는데도 사용할 수 있을 것 같다)

    ctl2.py
    # 値の取得方法1
    table = cur.execute('select * from students')
    data = table.fetchall()
    print(data)
    
    # 値の取得方法2
    for data in cur.execute('select * from students'):
        print(data)
    

    테이블의 데이터를 취득하고 싶을 때는, select한 후에 fetchall()를 합니다. 반복자로도 사용할 수 있습니다.

    꺼낸 값은 튜플 혹은 튜플을 요소로 한 배열로 되어 있습니다.

    CSV, TSV 파일을 가져오는 방법



    아래를 참조하십시오!
    파이썬에서 CSV, TSV 파일을 SQLite로 가져 오는 방법

    끝.

    참고문헌


  • SQLite 공식 웹 사이트
  • SQLite 데이터베이스에 대한 DB-API 2.0 인터페이스 (= 파이썬 측 공식 문서)
  • SQLite가 인식 할 수있는 SQL (= SQLite 위치 지정에 대한 기사)
  • SQLite의 적절한 사용법 (= SQLite의보다 상세한 사양)
  • 파이썬에서 CSV, TSV 파일을 SQLite로 가져 오는 방법
  • 좋은 웹페이지 즐겨찾기