• 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

     
  • 相关阅读:
    Towards Life-Long Autonomy of Mobile Robots Through Feature-Based Change Detection
    Magnetic field constraints and sequence-based matching for indoor pose graph SLAM
    3D Image-based Indoor Localization Joint With WiFi Positioning
    Online Probabilistic Change Detection in Feature-Based Maps
    Detectron2--(1)
    detectron2 + ubuntu + cpu
    出去上网-ubuntu-ss
    深度学习入门4
    IDM添加代理
    [转载]clover引导黑苹果icloud已达到账户数量限制解决方法
  • 原文地址:https://www.cnblogs.com/xiangsikai/p/8324710.html
Copyright © 2020-2023  润新知