python orm框架


#!/usr/bin/python
# -*- coding: utf-8 -*-
from sqlalchemy import create_engine
from sqlalchemy import Table, MetaData, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import mapper, sessionmaker

# 創建實例,並連接test庫
engine = create_engine("mysql+pymysql://root:123@localhost/demoDb?charset=utf8", encoding='utf-8', echo=True)
metadata = MetaData()
# echo=False 顯示信息
Base = declarative_base()  # 生成orm基類


class User(Base):
    __tablename__ = 'user'  # 表名
    id = Column(Integer, primary_key=True)
    name = Column(String(32))
    password = Column(String(64))

    def __init__(self):
        # 創建與數據庫的會話session class ,注意,這里返回給session的是個class,不是實例 self.session_class = sessionmaker(bind=engine) # 實例和engine綁定
        self.session = self.session_class()  # 生成session實例,相當於游標

    # 創建表
    def create_user(self):
        Base.metadata.create_all(engine)  # 創建表結構 (這里是父類調子類)

    # 新增數據
    def insert_user(self, user):
        self.session.add(use)  # 把要創建的數據對象添加到這個session里, 一會統一創建
        return self.session.commit()  # 現此才統一提交,創建數據

    # 根據一個字段查詢
    def sel_user(self):
        my_user = self.session.query(User).filter_by(name="12").first()  # 查詢
        return my_user

    '''
    ----------------     條件查詢    ----------------
        my_user1 = self.session.query(User).filter(User.id > 2).all()
        my_user2 = self.session.query(User).filter_by(id=27).all()  # filter_by相等用‘=’
        my_user3 = self.session.query(User).filter(User.id == 27).all()  # filter相等用‘==’
    ----------------     多條件查詢  ----------------
        objs = self.session.query(User).filter(User.id>0).filter(User.id<7).all()

    --------------     模糊查詢,返回count    ------------
        self.session.query(User).filter(User.name.like("f%")).count()  # mysql不區分大小寫

    ----------------     分組查詢    ----------------
        self.session.query(User.name,func.count(User.name)).group_by(User.name).all()

    ----------------     連表查詢    ----------------
        ret = self.session.query(Users, Favor).filter(Users.id == Favor.nid).all()
        # 以下兩種 必須表之間有外鍵關聯才能查
        ret = session.query(Person).join(Favor).all() 
        ret = session.query(Person).join(Favor, isouter=True).all()
    '''
    # 查詢所有
    def sel_user_all(self):
        return self.session.query(User).all()
        # return self.session.query(User.id,User.name).all() #查詢所有,結果集只包含 id,name

    # 修改操作
    def up_user(self):
        my_user = self.session.query(User).filter_by(name="fgf").first()
        my_user.name = "fenggf"  # 查詢出來之后直接賦值修改
        my_user.passwork = "123qwe"
        self.session.commit()

if __name__ == '__main__':
    use = User()
    user_list = use.sel_user_all()
    for us in user_list:
        print us.name


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM