1. 程式人生 > >SQLAlchemy教程-第二章-SQL常用查詢的ORM寫法

SQLAlchemy教程-第二章-SQL常用查詢的ORM寫法

elf class sql with primary 就是 lena == from

今天是2018-07-02.
今天來寫一些常用的SQL查詢的ORM寫法.

  1. 先把Emp, 也就是員工表的模型補上.
class Emp(Base):
    __tablename__ = ‘emp‘
    empno = Column(Integer, primary_key=True)
    ename = Column(String(10))
    job = Column(String(9))
    mgr = Column(Integer)
    hiredate = Column(Date)
    comm = Column(DECIMAL(7, 2))
    deptno = Column(Integer, ForeignKey(‘dept.deptno‘))

    def __repr__(self):  # 定義這個方法是為了方便打印到控制臺查看.
        return str({
            ‘empno‘: self.empno,
            ‘ename‘: self.ename,
            ‘job‘: self.job,
            ‘deptno‘: self.deptno
        })
  1. 接下來, 我們進行一些基本的查詢.
from models import *

def query_emp():
    emp1 = sess.query(Emp).first()
    print(emp1)


# 查詢名字叫Smith的員工
def query_emp_with_filter():
    emp1 = sess.query(Emp).filter(Emp.ename == ‘Smith‘).first()
    print(emp1)


# 查詢名字叫Smith, 職務為CLERK的一個員工
def query_emp_with_filters():
    emp1 = sess.query(Emp).filter(Emp.ename == ‘Smith‘, Emp.job == ‘CLERK‘).first()
    print(emp1)


# 查詢職務為CLERK的全部員工
def query_emp_all_clerks():
    emp_clerks = sess.query(Emp).filter(Emp.job == ‘CLERK‘).all()
    for clerk in emp_clerks:
        print(clerk)


# 查詢員工的名字和工號, 並按入職日期排序
def query_emp_empno_ename_order_by_hiredate():
    emps = sess.query(Emp.empno, Emp.ename, Emp.job, Emp.hiredate).order_by(Emp.hiredate.asc()).all()
    for item in emps:
        print(item.empno, item.ename, item.job, item.hiredate)

if __name__ == ‘__main__‘:
    query_emp_empno_ename_order_by_hiredate()

今天限於時間, 先這麽多. 講解比較粗劣, 各位同學有問題, 請留言.


SQLAlchemy官方網站
http://docs.sqlalchemy.org/en/latest/contents.html
教程全部代碼github地址
https://github.com/notfresh/sqlalchemy_demo

SQLAlchemy教程-第二章-SQL常用查詢的ORM寫法