0. sqlalchemy는 기존의 자바-스프링과 다른듯.
매퍼가 따로 필요없나? 싶기도 하고, mybatis와 같은 프레임웍인가 싶기도 하고
아직도 감을 못잡겠다.
1. DB와의 접속을 위에 session()을 선헌해주고 이를 가져온다.
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 | #공간확보 session = Session() # DB 접속을 위해 세션에 연결한다. 당연히 이 Session은 create_engine을 통해 DB와 연결을 해야한다.. 이건 나중에.. query = session.query(users) #괄호 안에 테이블, 또는 테이블.칼럼명(users.id) 이런식으로 하여 연결한다 # 여기서 query 자체는 그냥 쿼리문이다! 데이터를 가져오려면 query. all () query.first() # 등을 해야한다 query = session.query(users). all () # select * from users query = session.query(users. id ) # select id from users query = session.query(users. id , users.email) # select id, email fromusers # filter, func 등을 사용하면 where, 집계 함수 등을 사용할 수 있다. query = session.query(user). filter (user. id = 'test' ) # select * from users where id = 'test' query = session.queyr(user). filter (user. id = 'test).filter(user.email = ' gamil ') # select * from user where id = ' test and email = 'gmail' # 위 쿼리는 모양이 바로 이해가 안간다. 이럴경우 and_ 를 임포트 해서 filter에 사용하면 된다.(or_ 등도 다 임포트 해야함) query = session.query(user). filter (and_(user. id = 'test' , user.email = 'gmail' ) #all()를 통해 가져온 값은 리스트이고 sqlalchemy_results 객체이다. # 쉽게 생각하면 해당 테이블의 칼럼 값들의 튜플 형태이다. # 결과값에서 칼럼들의 값을 동적으로 뽑고 싶은경우(또는 넣고싶은 경우)에는 getattr, setattr을 사용한다 getattr (query, id ) setattr (query, id , 'kkk' ) # 이거를 왜 언급하냐면 쿼리문의 결과값은 리스트가 아니라서 query['id'] 이런식으로 못가져온다. # query.id 이렇게 해야 가져와진다. # dot point는 변수를 통해서 접근이 안된다 temp = 'id' query.temp # query.id로 인식을 못함 |