最近在看Udacity上的 Full Stack Foundations,从基础的CRUD开始介绍使用Python构建Web应用的各项步骤。本系列文章将介绍该课程所讲的内容,也算是我的笔记。
他们分别对应数据库的四个操作是
一般来说,我们如果要对数据库进行操作,需要使用SQL语句。而ORM则是使数据库中的表与Python中的类相对应。
例如我们现在需要做一个餐馆的网页,用来显示每家餐馆的菜单,那么我们就需要一个餐馆的表。
例如最简单的,只有id和name两个属性:
属性 | 类型 |
---|---|
Id | Integer |
Name | String(250) |
那么我们就可以使用ORM将它转化为一个类:
calss Restaurant:
__tablename__ = "restaurant"
id = Column(Integer, primary_key = True)
name = Column(String(250), nullable = False)
他们之间的关系可以用下图描述
** SQLAlchemy**是一个pythonORM库,具体可以看官网的文档。这里只说用到的。
首先我们需要创建数据库
配置代码
import sys
from sqlalchemy import Column, ForeignKey, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import relationship
from sqlalchemy import create_engine
Base = declarative_base()
创建类
都要继承自Base,Restaurant表示餐馆
class Restaurant(Base):
定义Table名称
__tablename__ = "restaurant"
描述对应关系
id = Column(Integer, primary_key = True)
name= Column(String(250), nullable = False)
最后创建数据库代码
engine = create_engine('sqlite:///restaurantmenu.db')
Base.metadata.create_all(engine)
整体代码
import sys
from sqlalchemy import Column, ForeignKey, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import relationship
from sqlalchemy import create_engine
Base = declarative_base()
class Restaurant(Base):
__tablename__ = "restaurant"
id = Column(Integer, primary_key = True)
name= Column(String(250), nullable= False)
class MenuItem(Base):
__tablename__ = "menuitem"
name= Column(String(80), nullable= False)
id = Column(Integer, primary_key= True)
description= Column(String(250))
price = Column(String(8))
course = Column(String(250))
restaurant_id = Column(Integer, ForeignKey('restaurant.id'))
restaurant = relationship('Restaurant')
engine = create_engine('sqlite:///restaurantmenu.db')
Base.metadata.create_all(engine)
其中relation描述了外键属性
运行此代码后即可生成sqlite文件。
我们可以直接在python解释器中运行代码