1, connect to the database, and create session
from sqlalchemy.orm Import sessionmaker from SQLAlchemy Import create_engine Engine = create_engine ( " MySQL + pymysql: // root: password @ 127.0.0.1:? 3306 / database = utf8 charset " , max_overflow = 0, # over up to create external connection pool size connection pool_size =. 5, # connection pool size pool_timeout = 30, # pool is no time thread waits up, otherwise an error pool_recycle = -1 # how long after the threads in the pool of recovery (reset) connected at one time ) the SessionFactory sessionmaker = (the bind = Engine) the session = the SessionFactory ()
2, by
# Single obj = the Users (name = ' Tom ' ) session.add (obj) Session.commit () # plurality session.add_all ([ the Users (name = ' Piece ' ), the Users (name = ' death ' ) ]) Session.commit () session.close ()
3, deleted
session.query(Users).filter(Users.id >= 2).delete()
session.commit()
session.close()
4, change
session.query (the Users) .filter (users.id ==. 4) .Update ({Users.name: ' death ' }) session.query (the Users) .filter (users.id ==. 4) .Update ({ ' name ' : ' Naruto ' }) # in the original field, modify the properties session.query (the Users) .filter (users.id ==. 4) .Update ({ ' name ' : Users.name + " the DSB " }, synchronize_session = False) Session.commit () session.close ()
5, check
# Queries all the Result = session.query (the Users) .all () for Row in the Result: Print (row.id, row.name) # according to the conditions query result = session.query (Users) .filter ( Users.id> = 2 ) for Row in Result: Print (row.id, row.name) # first object query id is greater than 2 Result = session.query (the Users) .filter (users.id> = 2 ) .first () Print (result)
supplement
# 1. 指定列, 字段别名 # select id,name as cname from users; result = session.query(Users.id,Users.name.label('cname')).all() for item in result: print(item[0],item.id,item.cname) # 2. 默认条件and session.query(Users).filter(Users.id > 1, Users.name == 'abc').all() # 3. between session.query(Users).filter(Users.id.between(1, 3), Users.name == 'abc').all() # 4. in, not in ~ session.query(Users).filter(Users.id.in_([1,3,4])).all() session.query(Users).filter(~Users.id.in_([1,3,4])).all() # 5. 子查询 session.query(Users).filter(Users.id.in_(session.query(Users.id).filter(Users.name=='abc'))).all() # 6. and 和 or from sqlalchemy import and_, or_ # 默认 and session.query(Users).filter(Users.id > 3, Users.name == 'eric').all() # and session.query(Users).filter(and_(Users.id > 3, Users.name == 'eric')).all() # or session.query (the Users) .filter (or_ (users.id <2, Users.name == ' Eric ' )). All () # used together or and session.query (the Users) .filter ( or_ ( users.id <2 , and_ (Users.name == ' Eric ' , users.id>. 3 ), Users.extra ! = "" )). All () # 7. the filter_by, query execution is internal filter session.query (the Users ) .filter_by (name = ' ABC ' ) .all () # 8. The arbitrary number wildcard%, _ a RET = session.query (the Users) .filter (Users.name.like ( ' A_ ')).all() ret = session.query(Users).filter(~Users.name.like('e%')).all() # 9. 切片/分页 result = session.query(Users)[1:2] # 10.排序 ret = session.query(Users).order_by(Users.name.desc()).all() ret = session.query(Users).order_by(Users.name.desc(), Users.id.asc()).all() # 11. group by, having , 聚合函数 from sqlalchemy.sql import func ret = session.query( Users.depart_id, func.count(Users.id), ).group_by(Users.depart_id).all() for item in ret: print(item) # having from sqlalchemy.sql import func ret = session.query( Users.depart_id, func.count(Users.id), ).group_by(Users.depart_id).having(func.count(Users.id) >= 2).all() for item in ret: print(item) # 12.union 和 union all, unuon 去重 union all 不去重 """ select id,name from users UNION select id,name from users; """ # 去重 q1 = session.query(Users.name).filter(Users.id > 2) q2 = session.query(Favor.caption).filter(Favor.nid < 2) ret = q1.union(q2).all() # 不去重 q1 = session.query(Users.name).filter(Users.id > 2) q2 = session.query(Favor.caption).filter(Favor.nid < 2) ret = q1.union_all(q2).all()
note:
1, operation data ends, close the session
session.close()
2, add, delete, change, to submit data
session.commit()