SQLAlchemy core 学习笔记(1) medata

在使用 Python web 框架Flask时发现很有必要学习一下SQLAlchemy。SQLAlchemy分为两部分,一是SQLAlchemy core,另一部分是SQLAlchemy ORM。使用SQLAlchemy的好处是经过SQLAlchemy抽象后很容易实现了代码在不同数据库之间兼容。SQLAlchemy core是SQLAlchemy ORM的基础。

以下内容是《Essential SQLAlchemy》第一章的读书笔记。

1. 通用数据类型

SQLAlchemy core 学习笔记(1) medata_第1张图片

2. Metadata

SQLAlchemy的对象,用来描述数据库结构,与Table、Column、Index、Keys 和 Constraints等概念相关。


3. 实例

1)4张表的关系模型

SQLAlchemy core 学习笔记(1) medata_第2张图片

2)4张表的python代码

from datetime import datetime
from sqlalchemy import (MetaData, Table, Column, Integer, Numeric, String,
 DateTime, ForeignKey, create_engine)
metadata = MetaData()
cookies = Table('cookies' , metadata,
 Column('cookie_id' , Integer(), primary_key=True),
 Column('cookie_name' , String(50), index=True),
 Column('cookie_recipe_url' , String(255)),
 Column('cookie_sku' , String(55)),
 Column('quantity' , Integer()),
 Column('unit_cost' , Numeric(12, 2))
)
users = Table('users' , metadata,
 Column('user_id' , Integer(), primary_key=True),
 Column('customer_number' , Integer(), autoincrement=True),
 Column('username' , String(15), nullable=False, unique=True),
 Column('email_address' , String(255), nullable=False),
 Column('phone' , String(20), nullable=False),
 Column('password' , String(25), nullable=False),
 Column('created_on' , DateTime(), default=datetime. now),
 Column('updated_on' , DateTime(), default=datetime. now, onupdate=datetime. now)
)
orders = Table('orders' , metadata,
 Column('order_id' , Integer(), primary_key=True),
 Column('user_id' , ForeignKey('users.user_id' ))
)
line_items = Table('line_items' , metadata,
 Column('line_items_id' , Integer(), primary_key=True),
 Column('order_id' , ForeignKey('orders.order_id' )),
 Column('cookie_id' , ForeignKey('cookies.cookie_id' )),
 Column('quantity' , Integer()),
 Column('extended_cost' , Numeric(12, 2))
)
engine = create_engine('sqlite:///:memory:' )
metadata.create_all(engine)





你可能感兴趣的:(python)