Flask数据库表关系
表之间的关系存在的三种:一对一、一对多、多对多。而SQLAlchemy中的ORM也可以模拟这三种关系。因为一对一其实在SQLAlchemy中底层是通过一对多的方式模拟的
一对多:
初始代码:
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column,Integer,String,DECIMAL,Boolean,Enum,DateTime,TEXT,ForeignKey
from sqlalchemy.orm import sessionmaker
# 数据库的配置变量
# 地址
HOSTNAME = '127.0.0.1'
# 数据库
DATABASE = 'tables'
# 端口
PORT = 3306
# 用户名和密码
USERNAME = 'root'
PASSWORD = 'root'
DB_URL = 'mysql+pymysql://{}:{}@{}:{}/{}'.format(USERNAME,PASSWORD,HOSTNAME,PORT,DATABASE)
engine = create_engine(DB_URL)
# 都要继承这个函数生成的基类
Base = declarative_base(engine)
class User(Base):
__tablename__ = 'user'
id = Column(Integer,primary_key=True,autoincrement=True) #传递参数Integer作为这个数据的一个类型约束,主键,自增
name = Column(String(50))
def __str__(self):
return 'User(name:{})'.format(self.name)
class Article(Base):
__tablename__ = 'article'
id = Column(Integer,primary_key=True,autoincrement=True)
title = Column(String(50))
content = Column(TEXT,nullable=Fal