• Python与数据库 sqlalchemy 建立声明层表对象的两种方式


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

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

    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  
    复制代码

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

  • 相关阅读:
    大道至简阅读笔记08-完结
    (转)MySQL的JDBC驱动源码解析
    Win7如何开启Telnet服务
    idea 设置jetty进程jvm参数
    (转)如何在maven环境中设置JVM参数
    (转)IntelliJ Idea 常用快捷键列表 for win
    cglib Demo
    MAVEN 配置阿里巴巴镜像
    MyBatis入门基础(一)
    JAVA常见面试题之Forward和Redirect的区别
  • 原文地址:https://www.cnblogs.com/dingjiaoyang/p/11039421.html
Copyright © 2020-2023  润新知