Python sqlalchemy orm 常用操作



增add

  • # 創建表1
  • # 注:高級封裝
  • import sqlalchemy
    
    # 調用鏈接數據庫
    from sqlalchemy import create_engine
    # 調用基類Base
    from sqlalchemy.ext.declarative import declarative_base
    # 調用Column創建字段 加類型
    from sqlalchemy import Column, Integer, String
    
    # create_engine 鏈接數據庫 mysql+pymysql:鏈接對象//用戶名:密碼@主機/DB
    # encoding='utf-8' 鏈接字符集 ,echo=True 把所有信息打印出來
    engine = create_engine("mysql+pymysql://root:123456@192.168.1.154/xiang",
                                        encoding='utf-8', echo=True)
    
    # 生成orm基類
    Base = declarative_base()
    
    # 繼承Base
    class User(Base):
        # __tablename__ 表名
        __tablename__ = 'user'
    
        # Column字段(數據類型 Integer整數,primary_key=True主鍵)
        id = Column(Integer, primary_key=True)
    
        # Column字段(String(32)字符長度)
        name = Column(String(32))
    
        # Column字段(String(64)字符長度)
        password = Column(String(64))
    
    # 創建表結構
    # 調用Baew基類方法metadata.create_all(鏈接數據庫)
    Base.metadata.create_all(engine)
    View Code

  •  # 創建表2
  • # 注:第一種方式創建的表就是基於第2種方式的再封裝。
  • from sqlalchemy import Table, MetaData, Column, Integer, String, ForeignKey
    from sqlalchemy.orm import mapper
    
    metadata = MetaData()
    
    # 創建表結構,調用metadata
    user = Table('user', metadata,
                Column('id', Integer, primary_key=True),
                Column('name', String(50)),
                Column('fullname', String(50)),
                Column('password', String(12))
            )
    
    # 創建類
    class User(object):
        def __init__(self, name, fullname, password):
            self.name = name
            self.fullname = fullname
            self.password = password
    
    # 將表元數據與表構造分開創建,然 后通過mapper()函數與用戶類關聯。
    mapper(User, user)
    View Code

  • # 表內插入數據
  • import sqlalchemy
    
    # 調用鏈接數據庫
    from sqlalchemy import create_engine
    # 調用基類Base
    from sqlalchemy.ext.declarative import declarative_base
    # 調用Column創建字段 加類型
    from sqlalchemy import Column, Integer, String
    
    # 調用操作鏈接
    from sqlalchemy.orm import sessionmaker
    
    # create_engine 鏈接數據庫 mysql+pymysql:鏈接對象//用戶名:密碼@主機/DB
    # encoding='utf-8' 鏈接字符集 ,echo=True 把所有信息打印出來
    engine = create_engine("mysql+pymysql://root:123456@192.168.1.154/xiang",encoding='utf-8',
                           #echo=True
                           )
    
    # 生成orm基類
    Base = declarative_base()
    
    # 繼承Base
    class User(Base):
        # __tablename__ 表名
        __tablename__ = 'user'
    
        # Column字段(數據類型 Integer整數,primary_key=True主鍵)
        id = Column(Integer, primary_key=True)
    
        # Column字段(String(32)字符長度)
        name = Column(String(32))
    
        # Column字段(String(64)字符長度)
        password = Column(String(64))
    
        # 返回一個可以用來表示對象的可打印字符串
        def __repr__(self):
            return "<%s name:%s>"%(self.id,self.name)
    
    
    # 創建與數據庫的會話session class ,注意,這里返回給session的是個class,不是實例
    # bind=engine 綁定engine socket實例
    Session_class = sessionmaker(bind=engine)
    
    #生成session實例,如同pymysql內的cursor
    Session = Session_class()
    
    #+-+-++-+-++-+-++-+-++-+-++-+-++-+-++-+-#
    #+-+-++-+-++-+-++-+-++-+-++-+-++-+-++-+-#
    
    # 生成你要創建的數據對象,只是創建對象
    user_obj = User(name="kevin",password="123456")
    
    #把要創建的數據對象添加到這個session里, 一會統一創建
    Session.add(user_obj)
    
    #+-+-++-+-++-+-++-+-++-+-++-+-++-+-++-+-#
    #+-+-++-+-++-+-++-+-++-+-++-+-++-+-++-+-#
    
    #現此才統一提交,創建數據
    Session.commit()
    View Code

刪delete

  • # 刪除表中字段中數據
  • import sqlalchemy
    
    # 調用鏈接數據庫
    from sqlalchemy import create_engine
    # 調用基類Base
    from sqlalchemy.ext.declarative import declarative_base
    # 調用Column創建字段 加類型
    from sqlalchemy import Column, Integer, String
    
    # 調用操作鏈接
    from sqlalchemy.orm import sessionmaker
    
    # create_engine 鏈接數據庫 mysql+pymysql:鏈接對象//用戶名:密碼@主機/DB
    # encoding='utf-8' 鏈接字符集 ,echo=True 把所有信息打印出來
    engine = create_engine("mysql+pymysql://root:123456@192.168.1.154/xiang",encoding='utf-8',
                           #echo=True
                           )
    
    # 生成orm基類
    Base = declarative_base()
    
    # 繼承Base
    class User(Base):
        # __tablename__ 表名
        __tablename__ = 'user'
    
        # Column字段(數據類型 Integer整數,primary_key=True主鍵)
        id = Column(Integer, primary_key=True)
    
        # Column字段(String(32)字符長度)
        name = Column(String(32))
    
        # Column字段(String(64)字符長度)
        password = Column(String(64))
    
        # 返回一個可以用來表示對象的可打印字符串
        def __repr__(self):
            return "<%s name:%s>"%(self.id,self.name)
    
    
    # 創建與數據庫的會話session class ,注意,這里返回給session的是個class,不是實例
    # bind=engine 綁定engine socket實例
    Session_class = sessionmaker(bind=engine)
    
    #生成session實例,如同pymysql內的cursor
    Session = Session_class()
    
    #+-+-++-+-++-+-++-+-++-+-++-+-++-+-++-+-#
    #+-+-++-+-++-+-++-+-++-+-++-+-++-+-++-+-#
    
    # 取出刪除的字段對象
    x = Session.query(User).filter(User.id=='1').first()
    
    # 使用delete刪除
    Session.delete(x)
    
    # 提交事件執行
    Session.commit()
    
    #+-+-++-+-++-+-++-+-++-+-++-+-++-+-++-+-#
    #+-+-++-+-++-+-++-+-++-+-++-+-++-+-++-+-#
    
    #現此才統一提交,創建數據
    Session.commit()
    View Code

改update

  • # 修改列表下字段下數據
  • import sqlalchemy
    
    # 調用鏈接數據庫
    from sqlalchemy import create_engine
    # 調用基類Base
    from sqlalchemy.ext.declarative import declarative_base
    # 調用Column創建字段 加類型
    from sqlalchemy import Column, Integer, String
    
    # 調用操作鏈接
    from sqlalchemy.orm import sessionmaker
    
    # create_engine 鏈接數據庫 mysql+pymysql:鏈接對象//用戶名:密碼@主機/DB
    # encoding='utf-8' 鏈接字符集 ,echo=True 把所有信息打印出來
    engine = create_engine("mysql+pymysql://root:123456@192.168.1.154/xiang",encoding='utf-8',
                           #echo=True
                           )
    
    # 生成orm基類
    Base = declarative_base()
    
    # 繼承Base
    class User(Base):
        # __tablename__ 表名
        __tablename__ = 'user'
    
        # Column字段(數據類型 Integer整數,primary_key=True主鍵)
        id = Column(Integer, primary_key=True)
    
        # Column字段(String(32)字符長度)
        name = Column(String(32))
    
        # Column字段(String(64)字符長度)
        password = Column(String(64))
    
        # 返回一個可以用來表示對象的可打印字符串
        def __repr__(self):
            return "<%s name:%s>"%(self.id,self.name)
    
    
    # 創建與數據庫的會話session class ,注意,這里返回給session的是個class,不是實例
    # bind=engine 綁定engine socket實例
    Session_class = sessionmaker(bind=engine)
    
    #生成session實例,如同pymysql內的cursor
    Session = Session_class()
    
    #+-+-++-+-++-+-++-+-++-+-++-+-++-+-++-+-#
    #+-+-++-+-++-+-++-+-++-+-++-+-++-+-++-+-#
    
    # 打印第一個User列表內指定name字符下kevin數據的 第一個對象
    data = Session.query(User).filter_by(name="n3").first()
    
    # data對象.字段 = ‘修改內容’
    data.name = 'vin.xx'
    
    #+-+-++-+-++-+-++-+-++-+-++-+-++-+-++-+-#
    #+-+-++-+-++-+-++-+-++-+-++-+-++-+-++-+-#
    
    #現此才統一提交,創建數據
    Session.commit()
    View Cod

查select

  • # 查找表內指定字符
  • 注:.all() 生成一個列表對象 .first() 打印第一個對象
  • import sqlalchemy
    
    # 調用鏈接數據庫
    from sqlalchemy import create_engine
    # 調用基類Base
    from sqlalchemy.ext.declarative import declarative_base
    # 調用Column創建字段 加類型
    from sqlalchemy import Column, Integer, String
    
    # 調用操作鏈接
    from sqlalchemy.orm import sessionmaker
    
    # create_engine 鏈接數據庫 mysql+pymysql:鏈接對象//用戶名:密碼@主機/DB
    # encoding='utf-8' 鏈接字符集 ,echo=True 把所有信息打印出來
    engine = create_engine("mysql+pymysql://root:123456@192.168.1.154/xiang",encoding='utf-8',
                           #echo=True
                           )
    
    # 生成orm基類
    Base = declarative_base()
    
    # 繼承Base
    class User(Base):
        # __tablename__ 表名
        __tablename__ = 'user'
    
        # Column字段(數據類型 Integer整數,primary_key=True主鍵)
        id = Column(Integer, primary_key=True)
    
        # Column字段(String(32)字符長度)
        name = Column(String(32))
    
        # Column字段(String(64)字符長度)
        password = Column(String(64))
    
        # 返回一個可以用來表示對象的可打印字符串
        def __repr__(self):
            return "<%s name:%s>"%(self.id,self.name)
    
    
    # 創建與數據庫的會話session class ,注意,這里返回給session的是個class,不是實例
    # bind=engine 綁定engine socket實例
    Session_class = sessionmaker(bind=engine)
    
    #生成session實例,如同pymysql內的cursor
    Session = Session_class()
    
    #+-+-++-+-++-+-++-+-++-+-++-+-++-+-++-+-#
    #+-+-++-+-++-+-++-+-++-+-++-+-++-+-++-+-#
    
    # 使用.filter_by 不能使用“<>”指定對象時不需要調用類對象。
    data = Session.query(User).filter_by(name="n3").all()
    
    # 取出data列表內的第一個內存地址下的name字段。
    print(data[0].name)
    
    #+-+-++-+-++-+-++-+-++-+-++-+-++-+-++-+-#
    #+-+-++-+-++-+-++-+-++-+-++-+-++-+-++-+-#
    
    #現此才統一提交,創建數據
    Session.commit()
    View Code

  • # 查找表內指定字符范圍查找
  • import sqlalchemy
    
    # 調用鏈接數據庫
    from sqlalchemy import create_engine
    # 調用基類Base
    from sqlalchemy.ext.declarative import declarative_base
    # 調用Column創建字段 加類型
    from sqlalchemy import Column, Integer, String
    
    # 調用操作鏈接
    from sqlalchemy.orm import sessionmaker
    
    # create_engine 鏈接數據庫 mysql+pymysql:鏈接對象//用戶名:密碼@主機/DB
    # encoding='utf-8' 鏈接字符集 ,echo=True 把所有信息打印出來
    engine = create_engine("mysql+pymysql://root:123456@192.168.1.154/xiang",encoding='utf-8',
                           #echo=True
                           )
    
    # 生成orm基類
    Base = declarative_base()
    
    # 繼承Base
    class User(Base):
        # __tablename__ 表名
        __tablename__ = 'user'
    
        # Column字段(數據類型 Integer整數,primary_key=True主鍵)
        id = Column(Integer, primary_key=True)
    
        # Column字段(String(32)字符長度)
        name = Column(String(32))
    
        # Column字段(String(64)字符長度)
        password = Column(String(64))
    
        # 返回一個可以用來表示對象的可打印字符串
        def __repr__(self):
            return "<%s name:%s>"%(self.id,self.name)
    
    
    # 創建與數據庫的會話session class ,注意,這里返回給session的是個class,不是實例
    # bind=engine 綁定engine socket實例
    Session_class = sessionmaker(bind=engine)
    
    #生成session實例,如同pymysql內的cursor
    Session = Session_class()
    
    #+-+-++-+-++-+-++-+-++-+-++-+-++-+-++-+-#
    #+-+-++-+-++-+-++-+-++-+-++-+-++-+-++-+-#
    
    # 使用.filter可以使用"< == >'符號來指定范圍查找,前面需要加類對象
    data = Session.query(User).filter(User.id>2).all()
    print(data)
    
    #+-+-++-+-++-+-++-+-++-+-++-+-++-+-++-+-#
    #+-+-++-+-++-+-++-+-++-+-++-+-++-+-++-+-#
    
    #現此才統一提交,創建數據
    Session.commit()
    View Code

  • # 查找表內指定字符范圍,多個條件查找
  • import sqlalchemy
    
    # 調用鏈接數據庫
    from sqlalchemy import create_engine
    # 調用基類Base
    from sqlalchemy.ext.declarative import declarative_base
    # 調用Column創建字段 加類型
    from sqlalchemy import Column, Integer, String
    
    # 調用操作鏈接
    from sqlalchemy.orm import sessionmaker
    
    # create_engine 鏈接數據庫 mysql+pymysql:鏈接對象//用戶名:密碼@主機/DB
    # encoding='utf-8' 鏈接字符集 ,echo=True 把所有信息打印出來
    engine = create_engine("mysql+pymysql://root:123456@192.168.1.154/xiang",encoding='utf-8',
                           #echo=True
                           )
    
    # 生成orm基類
    Base = declarative_base()
    
    # 繼承Base
    class User(Base):
        # __tablename__ 表名
        __tablename__ = 'user'
    
        # Column字段(數據類型 Integer整數,primary_key=True主鍵)
        id = Column(Integer, primary_key=True)
    
        # Column字段(String(32)字符長度)
        name = Column(String(32))
    
        # Column字段(String(64)字符長度)
        password = Column(String(64))
    
        # 返回一個可以用來表示對象的可打印字符串
        def __repr__(self):
            return "<%s name:%s>"%(self.id,self.name)
    
    
    # 創建與數據庫的會話session class ,注意,這里返回給session的是個class,不是實例
    # bind=engine 綁定engine socket實例
    Session_class = sessionmaker(bind=engine)
    
    #生成session實例,如同pymysql內的cursor
    Session = Session_class()
    
    #+-+-++-+-++-+-++-+-++-+-++-+-++-+-++-+-#
    #+-+-++-+-++-+-++-+-++-+-++-+-++-+-++-+-#
    
    # 可以通過filter多條件查詢
    data = Session.query(User).filter(User.id >1).filter(User.id <3).all()
    print(data)
    
    #+-+-++-+-++-+-++-+-++-+-++-+-++-+-++-+-#
    #+-+-++-+-++-+-++-+-++-+-++-+-++-+-++-+-#
    
    #現此才統一提交,創建數據
    Session.commit()
    View Code

  • # 統計獲取數量
  • import sqlalchemy
    
    # 調用鏈接數據庫
    from sqlalchemy import create_engine
    # 調用基類Base
    from sqlalchemy.ext.declarative import declarative_base
    # 調用Column創建字段 加類型
    from sqlalchemy import Column, Integer, String
    
    # 調用操作鏈接
    from sqlalchemy.orm import sessionmaker
    
    # create_engine 鏈接數據庫 mysql+pymysql:鏈接對象//用戶名:密碼@主機/DB
    # encoding='utf-8' 鏈接字符集 ,echo=True 把所有信息打印出來
    engine = create_engine("mysql+pymysql://root:123456@192.168.1.154/xiang",encoding='utf-8',
                           #echo=True
                           )
    
    # 生成orm基類
    Base = declarative_base()
    
    # 繼承Base
    class User(Base):
        # __tablename__ 表名
        __tablename__ = 'user'
    
        # Column字段(數據類型 Integer整數,primary_key=True主鍵)
        id = Column(Integer, primary_key=True)
    
        # Column字段(String(32)字符長度)
        name = Column(String(32))
    
        # Column字段(String(64)字符長度)
        password = Column(String(64))
    
        # 返回一個可以用來表示對象的可打印字符串
        def __repr__(self):
            return "<%s name:%s>"%(self.id,self.name)
    
    
    # 創建與數據庫的會話session class ,注意,這里返回給session的是個class,不是實例
    # bind=engine 綁定engine socket實例
    Session_class = sessionmaker(bind=engine)
    
    #生成session實例,如同pymysql內的cursor
    Session = Session_class()
    
    #+-+-++-+-++-+-++-+-++-+-++-+-++-+-++-+-#
    #+-+-++-+-++-+-++-+-++-+-++-+-++-+-++-+-#
    
    # 使用.count()統計獲取數量
    print(Session.query(User).count())
    
    #+-+-++-+-++-+-++-+-++-+-++-+-++-+-++-+-#
    #+-+-++-+-++-+-++-+-++-+-++-+-++-+-++-+-#
    
    #現此才統一提交,創建數據
    Session.commit()
    View Code

  • # 分組獲取相同數
  • import sqlalchemy
    
    # 調用鏈接數據庫
    from sqlalchemy import create_engine
    # 調用基類Base
    from sqlalchemy.ext.declarative import declarative_base
    # 調用Column創建字段 加類型
    from sqlalchemy import Column, Integer, String
    
    # 調用操作鏈接
    from sqlalchemy.orm import sessionmaker
    
    # create_engine 鏈接數據庫 mysql+pymysql:鏈接對象//用戶名:密碼@主機/DB
    # encoding='utf-8' 鏈接字符集 ,echo=True 把所有信息打印出來
    engine = create_engine("mysql+pymysql://root:123456@192.168.1.154/xiang",encoding='utf-8',
                           #echo=True
                           )
    
    # 生成orm基類
    Base = declarative_base()
    
    # 繼承Base
    class User(Base):
        # __tablename__ 表名
        __tablename__ = 'user'
    
        # Column字段(數據類型 Integer整數,primary_key=True主鍵)
        id = Column(Integer, primary_key=True)
    
        # Column字段(String(32)字符長度)
        name = Column(String(32))
    
        # Column字段(String(64)字符長度)
        password = Column(String(64))
    
        # 返回一個可以用來表示對象的可打印字符串
        def __repr__(self):
            return "<%s name:%s>"%(self.id,self.name)
    
    
    # 創建與數據庫的會話session class ,注意,這里返回給session的是個class,不是實例
    # bind=engine 綁定engine socket實例
    Session_class = sessionmaker(bind=engine)
    
    #生成session實例,如同pymysql內的cursor
    Session = Session_class()
    
    #+-+-++-+-++-+-++-+-++-+-++-+-++-+-++-+-#
    #+-+-++-+-++-+-++-+-++-+-++-+-++-+-++-+-#
    
    from sqlalchemy import func
    
    # func.count統計數量(類對象.統計字段),顯示字段
    # .group_by(統計字段).all()
    print(Session.query(func.count(User.name),User.name).group_by(User.name).all())
    
    #相當於原生sql為
    #SELECT count(user.name) AS count_1, user.name AS user_name
    #FROM user GROUP BY user.name
    
    #+-+-++-+-++-+-++-+-++-+-++-+-++-+-++-+-#
    #+-+-++-+-++-+-++-+-++-+-++-+-++-+-++-+-#
    
    #現此才統一提交,創建數據
    Session.commit()
    View Code

  • # 兩張表 字段匹配 查找相同數據
  • import sqlalchemy
    
    # 調用鏈接數據庫
    from sqlalchemy import create_engine
    # 調用基類Base
    from sqlalchemy.ext.declarative import declarative_base
    # 調用Column創建字段 加類型
    from sqlalchemy import Column, Integer, String,DATE,Enum
    # 調用操作鏈接
    from sqlalchemy.orm import sessionmaker
    
    # create_engine 鏈接數據庫 mysql+pymysql:鏈接對象//用戶名:密碼@主機/DB
    # encoding='utf-8' 鏈接字符集 ,echo=True 把所有信息打印出來
    engine = create_engine("mysql+pymysql://root:123456@192.168.1.154/xiang",encoding='utf-8',
                           #echo=True
                           )
    
    # 生成orm基類
    Base = declarative_base()
    
    # 繼承Base
    class User(Base):
        # __tablename__ 表名
        __tablename__ = 'user'
    
        # Column字段(數據類型 Integer整數,primary_key=True主鍵)
        id = Column(Integer, primary_key=True)
    
        # Column字段(String(32)字符長度)
        name = Column(String(32))
    
        # Column字段(String(64)字符長度)
        password = Column(String(64))
    
        # 返回一個可以用來表示對象的可打印字符串
        def __repr__(self):
            return "<%s name:%s>"%(self.id,self.name)
    
    class User2(Base):
        # __tablename__ 表名
        __tablename__ = 'user2'
    
        # Column字段(數據類型 Integer整數,primary_key=True主鍵)
        id = Column(Integer, primary_key=True)
    
        # Column字段(String(32)字符長度)
        name = Column(String(32))
    
        # Column字段(String(64)字符長度)
        password = Column(String(64))
    
        # 返回一個可以用來表示對象的可打印字符串
        def __repr__(self):
            return "<%s name:%s>"%(self.id,self.name)
    
    # 創建與數據庫的會話session class ,注意,這里返回給session的是個class,不是實例
    # bind=engine 綁定engine socket實例
    Session_class = sessionmaker(bind=engine)
    #生成session實例,如同pymysql內的cursor
    Session = Session_class()
    
    #+-+-++-+-++-+-++-+-++-+-++-+-++-+-++-+-#
    #+-+-++-+-++-+-++-+-++-+-++-+-++-+-++-+-#
    
    # Session.query(表1,表2).filter(表1.字段==表2.字段).all()
    print(Session.query(User,User2).filter(User.id==User2.id).all())
    
    #+-+-++-+-++-+-++-+-++-+-++-+-++-+-++-+-#
    #+-+-++-+-++-+-++-+-++-+-++-+-++-+-++-+-#
    
    #現此才統一提交,創建數據
    Session.commit()
    View Code

  • # 兩張表 外鍵匹配 查找相同數據
  • 注:通過join匹配兩個表中的外鍵字段 打印數據
  • import sqlalchemy
    
    # 調用鏈接數據庫
    from sqlalchemy import create_engine
    # 調用基類Base
    from sqlalchemy.ext.declarative import declarative_base
    # 調用Column創建字段 加類型
    from sqlalchemy import Column, Integer, String,DATE,Enum
    # 調用操作鏈接
    from sqlalchemy.orm import sessionmaker
    
    # create_engine 鏈接數據庫 mysql+pymysql:鏈接對象//用戶名:密碼@主機/DB
    # encoding='utf-8' 鏈接字符集 ,echo=True 把所有信息打印出來
    engine = create_engine("mysql+pymysql://root:123456@192.168.1.154/xiang",encoding='utf-8',
                           #echo=True
                           )
    
    # 生成orm基類
    Base = declarative_base()
    
    # 繼承Base
    class User(Base):
        # __tablename__ 表名
        __tablename__ = 'user'
    
        # Column字段(數據類型 Integer整數,primary_key=True主鍵)
        id = Column(Integer, primary_key=True)
    
        # Column字段(String(32)字符長度)
        name = Column(String(32))
    
        # Column字段(String(64)字符長度)
        password = Column(String(64))
    
        # 返回一個可以用來表示對象的可打印字符串
        def __repr__(self):
            return "<%s name:%s>"%(self.id,self.name)
    
    class User2(Base):
        # __tablename__ 表名
        __tablename__ = 'user2'
    
        # Column字段(數據類型 Integer整數,primary_key=True主鍵)
        id = Column(Integer, primary_key=True)
    
        # Column字段(String(32)字符長度)
        name = Column(String(32))
    
        # Column字段(String(64)字符長度)
        password = Column(String(64))
    
        # 返回一個可以用來表示對象的可打印字符串
        def __repr__(self):
            return "<%s name:%s>"%(self.id,self.name)
    
    # 創建與數據庫的會話session class ,注意,這里返回給session的是個class,不是實例
    # bind=engine 綁定engine socket實例
    Session_class = sessionmaker(bind=engine)
    #生成session實例,如同pymysql內的cursor
    Session = Session_class()
    
    #+-+-++-+-++-+-++-+-++-+-++-+-++-+-++-+-#
    #+-+-++-+-++-+-++-+-++-+-++-+-++-+-++-+-#
    
    # Session.query(表1).join(表2).all()
    print(Session.query(User).join(User2).all())
    
    # Session.query(表1).join(表2,isouter=True)
    print(Session.query(User).join(User2,isouter=True).all())
    
    
    #+-+-++-+-++-+-++-+-++-+-++-+-++-+-++-+-#
    #+-+-++-+-++-+-++-+-++-+-++-+-++-+-++-+-#
    
    #現此才統一提交,創建數據
    Session.commit()
    View Code

 
其他操作

  • # 回滾操作
  • import sqlalchemy
    
    # 調用鏈接數據庫
    from sqlalchemy import create_engine
    # 調用基類Base
    from sqlalchemy.ext.declarative import declarative_base
    # 調用Column創建字段 加類型
    from sqlalchemy import Column, Integer, String
    
    # 調用操作鏈接
    from sqlalchemy.orm import sessionmaker
    
    # create_engine 鏈接數據庫 mysql+pymysql:鏈接對象//用戶名:密碼@主機/DB
    # encoding='utf-8' 鏈接字符集 ,echo=True 把所有信息打印出來
    engine = create_engine("mysql+pymysql://root:123456@192.168.1.154/xiang",encoding='utf-8',
                           #echo=True
                           )
    
    # 生成orm基類
    Base = declarative_base()
    
    # 繼承Base
    class User(Base):
        # __tablename__ 表名
        __tablename__ = 'user'
    
        # Column字段(數據類型 Integer整數,primary_key=True主鍵)
        id = Column(Integer, primary_key=True)
    
        # Column字段(String(32)字符長度)
        name = Column(String(32))
    
        # Column字段(String(64)字符長度)
        password = Column(String(64))
    
        # 返回一個可以用來表示對象的可打印字符串
        def __repr__(self):
            return "<%s name:%s>"%(self.id,self.name)
    
    
    # 創建與數據庫的會話session class ,注意,這里返回給session的是個class,不是實例
    # bind=engine 綁定engine socket實例
    Session_class = sessionmaker(bind=engine)
    
    #生成session實例,如同pymysql內的cursor
    Session = Session_class()
    
    #+-+-++-+-++-+-++-+-++-+-++-+-++-+-++-+-#
    #+-+-++-+-++-+-++-+-++-+-++-+-++-+-++-+-#
    
    # 添加一條數據User
    fuck_user = User(name='Rain',password='12345')
    Session.add(fuck_user)
    
    # 這時看session里有你剛添加和修改的數據
    # User.name.in_([數據1,數據2]),打印數據1或數據2
    print(Session.query(User).filter(User.name.in_(['Jack','rain'])).all())
    
    # 回滾命令
    Session.rollback()
    
    # 數據回滾后再次查看
    print(Session.query(User).filter(User.name.in_(['Jack','rain'])).all())
    
    #+-+-++-+-++-+-++-+-++-+-++-+-++-+-++-+-#
    #+-+-++-+-++-+-++-+-++-+-++-+-++-+-++-+-#
    
    #現此才統一提交,創建數據
    Session.commit()
    View Code

 


免責聲明!

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



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