SQLAlchemy core 学习笔记(1) medata

来源:互联网 发布:机房网络性能 编辑:程序博客网 时间:2024/06/07 03:13

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

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

1. 通用数据类型



2. Metadata

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


3. 实例

1)4张表的关系模型


2)4张表的python代码

from datetime import datetimefrom 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)





0 0