데이터베이스(db)/SQLite

[Python] Sqlalchemy로 데이터베이스 읽기, 조건문 설정하기

끄적끄적아무거나 2022. 10. 21. 16:54
반응형

 

목차

     

     

     

     

     

     

    파이썬 Sqlalchemy로 Database 값 전체 불러오기

     

    SQLite의 데이터 값 전체 선택은 select 함수로 함수 니다. 그리고 이를 실행시키고 DB값을 출력 하면 됩니다.

     

    아래 예제를 통해 쉽게 이해해 보겠습니다. 예제의 DB는 앞서 포스트에서 미리 만들어놓은 아래 DB값을 사용하겠습니다.(아래 테이블 참조) 

     

    예제 코드>>

    from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String
    engine = create_engine('sqlite:///sales.db', echo = True)
    meta = MetaData()
    
    company = Table(
       'sales', meta, 
       Column('id', Integer, primary_key = True), 
       Column('name', String), 
       Column('addr', String),
    )
    
    conn = engine.connect()
    
    sel_all = company.select()
    result = conn.execute(sel_all)
    
    for _ in result:
       print (_)

    12번 라인: db파일에 연결합니다.

    14번 라인: db에 저장된 테이블 형태에 연결합니다.

    15번 라인: 테이블에 맞춰서 모든 값을 불러 옵니다.

     

     

    결과>>

    2022-10-20 09:05:33,717 INFO sqlalchemy.engine.Engine SELECT sales.id, sales.name, sales.addr 
    FROM sales
    2022-10-20 09:05:33,717 INFO sqlalchemy.engine.Engine [generated in 0.00068s] ()
    (1, 'James', 'Seoul')
    (2, 'David', 'Seoul')
    (3, 'Miller', 'Busan')
    (4, 'Suzy', 'Daegu')

     

     

     

     

     

    파이썬 Sqlalchemy로 조건문걸어서 검색하기

     

    SQL에서 조건문은 where 함수를 사용해서 쉽게 처리할 수 있습니다. 코드는 앞서 코드와 동일하고 읽기에서 where를 사용해서 서울에 사는 사람만을 검색하도록 하겠습니다.

     

    예제 코드>>

    from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String
    engine = create_engine('sqlite:///sales.db', echo = True)
    meta = MetaData()
    
    company = Table(
       'sales', meta, 
       Column('id', Integer, primary_key = True), 
       Column('name', String), 
       Column('addr', String),
    )
    
    conn = engine.connect()
    
    sel_all = company.select().where(company.c.addr == 'Seoul')
    result = conn.execute(sel_all)
    
    for _ in result:
       print (_)

    14번 라인: where함수에서 company테이블에서 column중에 addr부분에서 Seoul 만을 선택합니다.

     

     

    결과>>

    2022-10-20 09:07:11,422 INFO sqlalchemy.engine.Engine SELECT sales.id, sales.name, sales.addr 
    FROM sales
    WHERE sales.addr = ?
    2022-10-20 09:07:11,423 INFO sqlalchemy.engine.Engine [generated in 0.00048s] ('Seoul',)
    (1, 'James', 'Seoul')
    (2, 'David', 'Seoul')
    PS D:\Python\test03>

     

    반응형