zoukankan      html  css  js  c++  java
  • python中orm框架学习

    安装sqlalchemy

    pip3 install sqlalchemy

    创建表结构:

    from sqlalchemy import Column,String,create_engine
    from sqlalchemy.orm import sessionmaker,relationship
    from sqlalchemy.ext.declarative import declarative_base
    
    import pymysql
    #创建对象的基类
    Base = declarative_base()
    #定义user对象
    class User(Base):
        #表的名字
        __tablename__ = 'user'
        #表的结构
        id = Column(Integer,primary_key=True,autoincrement=True)
        name = Column(String(20))
    #初始化数据库连接
    #数据库类型+数据库驱动名称://用户名:口令@机器地址:端口号/数据库名
    
    engine = create_engine('mysql+pymysql://root:123456@192.168.170.129:3306/learn_orm',max_overflow=5)
    Base.metadata.create_all(engine)
    
    #创建DBSession类型
    DBSession = sessionmaker(bind=engine)
    

    一对多核多对多

    from sqlalchemy.ext.declarative import declarative_base
    from sqlalchemy import Column,Integer,String,ForeignKey,UniqueConstraint,Index
    from sqlalchemy.orm import sessionmaker,relationship
    from sqlalchemy import create_engine
    engine = create_engine("mysql+pymysql://root:123456@192.168.180.129:3306/test",max_overflow=5)
    Base = declarative_base()
    #创建单表
    class Users(Base):
        __tablename__ = 'users'
        id = Column(Integer,primary_key=True)
        name = Column(String(32))
        extra = Column(String(16))
    
    #一对多
    
    class Favor(Base):
        __tablename__ = 'favor'
        nid = Column(Integer,primary_key=True)
        caption = Column(String(50),default='red',unique=True)
    
    class Person(Base):
        __tablename__ = 'person'
        nid = Column(Integer,primary_key=True)
        name = Column(String(32),index=True,nullable=True)
        favor_id = Column(Integer,ForeignKey('favor.nid'))
    
    #多对多
    class Group(Base):
        __tablename__ = 'group'
        nid = Column(Integer,primary_key=True)
        name = Column(String(64),unique=True,nullable=False)
        port = Column(Integer,default=22)
    
    
    class Server(Base):
        __tablename__ = 'server'
        id = Column(Integer,primary_key=True,autoincrement=True)
        hostname = Column(String(64),unique=True,nullable=False)
    class ServerToGroup(Base):
        __tablename__ = 'servertogroup'
        nid = Column(Integer,primary_key=True,autoincrement=True)
        server_id = Column(Integer, ForeignKey('server.id'))
        group_id = Column(Integer, ForeignKey('group.nid'))
    # Base.metadata.create_all(engine) #生成表
    Base.metadata.drop_all(engine) #生成表
    

    #添加数据(往Users表增加数据)

    from sqlalchemy.ext.declarative import declarative_base
    from sqlalchemy import Column,Integer,String,ForeignKey,UniqueConstraint,Index
    from sqlalchemy.orm import sessionmaker,relationship
    from sqlalchemy import create_engine
    from orm一对多和多对多 import Users  #从orm一对多和对多程序中导入Users类
    engine = create_engine("mysql+pymysql://root:123456@192.168.180.129:3306/test",max_overflow=5)
    Base = declarative_base()
    Base.metadata.create_all(engine) #生成表
    # Base.metadata.drop_all(engine) #生成表
    Session =  sessionmaker(bind=engine)
    session = Session()
    #增加数据
    obj = Users(name="parktrick",extra="Devops")
    session.add(obj)
    session.commit()  #不执行这步,数据是写入不了数据库的
    

    #删除User表某条数据

    #删除数据
    session.query(Users).filter(Users.id > 2).delete() #把Users.id大于2的数据删除掉
    session.commit()
    

    #修改数据

    #修改数据
    session.query(Users).filter(Users.id > 1).update({"name":"bob"}) #修改User.id大于1的name为"bob"
    session.commit()
    

     

    天天向上,空杯心态。
  • 相关阅读:
    存储管理:
    小软件推荐:
    python学习之序列化
    python学习之串口编程
    python学习之常用模块
    Linux调试工具strace和gdb常用命令小结
    adjtimex和时钟的几个概念tick,freq,ppm,jiffies
    koji
    top -Hp pid 显示所有的线程
    Neighbour table overflow---- arp表溢出
  • 原文地址:https://www.cnblogs.com/uglyliu/p/6273083.html
Copyright © 2011-2022 走看看