MySQL之ORM

MySQL之ORM 

返回首页

ORM

  - 作用:
    1. 提供简单的规则
    2. 自动转换成SQL语句

  - DB first: 手动创建数据库以及表 -> ORM框架 -> 自动生成类
  - code first: 手动创建类、和数据库 -> ORM框架 -> 自动生成表

 

  - 功能
    - 创建数据库表
    - 连接数据库(非SQLAlchemy,pymyql,mysqldb,....)
    - 类转换SQL语句
    - 操作数据行
      增
      删
      改
      查

    - 便利的功能

 

创建单表:

class UserType(Base):
  __tablename__ = 'usertype'
  id = Column(Integer,primary_key=True,autoincrement=True)
  title = Column(String(32),nullable=True,index=True)


class
User(Base): __tablename__ = 'users' id = Column(Integer,primary_key=True,autoincrement=True) name = Column(String(32),nullable=True,index=True) age = Column(String(16),unique=True)
   user_type_id = Column(Integer,ForeignKey('usertype.id'))
  
  __table_args_ = (
    UniqueConstraint('id','name',name='uix_id_name'),
    Index('ix_id_name','name','id')
  )

连接mysql数据库:

engine = create_engine('mysql+pymysql://数据库用户名:密码@主机IP:3306/数据库名?charset=utf8',max_overflow=5)
Base.metadata.create_all(engine)

 删除操作:

Base.metadata.drop_all(engine)

 数据行增操作:

engine = create_engine('mysql+pymysql://数据库用户名:密码@主机IP:3306/数据库名?charset=utf8',max_overflow=5)
Session = sessionmaker(bind=engine)
session = Session()
#类->表,对象->行
obj1 = UserType(title='普通用户')
session.add(obj1)

# 添加多条数据
objs = [
  UserType(title='超级用户'),
  UserType(title='白金用户'),
  UserType(title='黑金用户'),
] session.add_all(objs)
session.commit() session.close()

数据行查操作: 

user_type_list = session.query(UserType).all()
user_type_list = session.query(UserType).filter(UserType.id>2)
user_type_list = session.query(UserType.id,UserType.title).filter(UserType.id>2)
for row in user_type_list:
  print(row.id,row.title)

 数据行删操作:

user_type_list = session.query(UserType.id,UserType.title).filter(UserType.id>2).delete()

数据行改操作: 

user_type_list = session.query(UserType.id,UserType.title).filter(UserType.id>2).update({'title':'黑金'})
user_type_list = session.query(UserType.id,UserType.title).filter(UserType.id>2).update({UserType.title:UserType.title + "X"}, synchronize_session=False)
user_list = session.query(User.id,User.name,User.age).filter(User.id>1).update({"age": User.age + 1}, synchronize_session="evaluate")

 

 



 

参考博客: http://www.cnblogs.com/wupeiqi/articles/5713330.html

----- END -----

posted @ 2021-08-09 08:36  王先生是胖子  阅读(419)  评论(0编辑  收藏  举报