而新的ORM映射不需要手动通过mapping函数来关联table与类之间的关系,可以直接通过声明(Declarative )系统(我不知道这样翻译对不对)来定义一个类,这个类会直接映射到数据库的表,declarative 把 Table、mapper、还有类这三者放在一块进行声明,从而实现了ORM的映射。来看例子:
from sqlalchemy.ext.declarative import declarative_base Base = declarative_base() class Article(Base): __tablename__ = 'news_article' id = Column(Integer, primary_key=True) title = Column(String(50))
是不是简单很多了,没有了Table的定义,没有mapper函数,只有一个类的定义,这个类必须继承基类 Base,Base 就是我们的声明系统,这样就完成了Table与类之间的映射关系,而背后的操作都是通过一个declarative_base 工厂方法构造的声明系统完成的。
我们把 Article 又称之为映射类,这个类持有 Table 和 mapper 函数的引用。
>>> print(Article.__table__) news_article >>>print(Article.__mapper__) Mapper|Article|news_article # 前面将的metadata 可以通过 Base 获取 >>>print(Base.metadata) MetaData(bind=None)
MetaData 有什么用的?可以通过它来创建表或者删除表。
标签:SQLite
相关阅读 >>
忘记grafana不要紧2种grafana重置admin密码方法详细步骤
navicat for Sqlite导入csv中文数据的方法
python使用Sqlite3第三方库读写Sqlite数据库的方法步骤
python中sqllite插入numpy数组到数据库的实现方法
更多相关阅读请进入《Sqlite》频道 >>

数据库系统概念 第6版
本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。