• 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()
    

     

    天天向上,空杯心态。
  • 相关阅读:
    深入浅出HTTP请求(转自http://www.cnblogs.com/yin-jingyu/archive/2011/08/01/2123548.html)
    IOS定位
    webView(简单的浏览器)
    Get&Post登录
    IOS多媒体
    IOS VFL屏幕自适应
    IOS中在自定义控件(非视图控制器)的视图跳转中 代理方法与代码块的比较
    单例设计的定义
    动画
    多线程
  • 原文地址:https://www.cnblogs.com/uglyliu/p/6273083.html
Copyright © 2020-2023  润新知