zoukankan      html  css  js  c++  java
  • Python与数据库[2] -> 关系对象映射/ORM[2] -> 建立声明层表对象的两种方式

    建立声明层表对象的两种方式


    在对表对象进行建立的时候,通常有两种方式可以完成,以下是两种方式的建立过程对比

    首先导入需要的模块,获取一个声明层

    1 from sqlalchemy.sql.schema import Table, Column
    2 from sqlalchemy.sql.sqltypes import Integer
    3 from sqlalchemy.ext.declarative import declarative_base
    4 
    5 Base = declarative_base()

    两种方法,

    1. 第一种首先对__tablename__进行赋值,确定表名,随后建立列实例,赋值给同名的类属性;
    2. 第二种方法是直接利用Table()类对__table__进行赋值,通过Table类建立起表的各项属性信息。

    Note: 此处两种方法都使用声明层作为基类,第一种方法未传入metadata,会自动使用Base.metadata,第二种方法则直接进行了传入。

    1 # Method one:
    2 class table_one(Base):
    3     __tablename__ = 'table_one'
    4     id = Column(Integer, primary_key=True)
    5 
    6 # Method two:
    7 class table_two(Base):
    8     __table__ = Table('table_two', Base.metadata, 
    9             Column('id', Integer, primary_key=True))

    最后运行显示

    1 print(type(table_one), type(table_one.id), table_one.id, sep='
    ')
    2 print(type(table_two), type(table_two.id), table_two.id, sep='
    ')

    输出结果

    <class 'sqlalchemy.ext.declarative.api.DeclarativeMeta'>  
    <class 'sqlalchemy.orm.attributes.InstrumentedAttribute'>  
    table_one.id  
    <class 'sqlalchemy.ext.declarative.api.DeclarativeMeta'>  
    <class 'sqlalchemy.orm.attributes.InstrumentedAttribute'>  
    table_two.id  

    从输出的结果中可以看出,两种方式建立的表是相同类型的。

  • 相关阅读:
    VS2010程序打包
    Extjs布局
    Extjs4.x完美treepanel checkbox无限级选中与取消
    extjs 4.2 日期控件 选择时分秒功能
    extjs4.0下的日期控件的星期显示为y的解决办法
    linux下mysql 配置
    坐标轴笔记
    cpp 内嵌函数(lambda,struct)
    ue4 笔记
    ue4 蓝图方法备份
  • 原文地址:https://www.cnblogs.com/stacklike/p/8192845.html
Copyright © 2011-2022 走看看