1.设立外建
class User(Base):
__tablename__= 'user'
id = Column(String,primary_key=True,autoincrement=True)
username = Column(String(50),nullable-False)
class Atticle(Base):
__tablename__='article'
id = Column(Integer,primary_key=True,autoinrement=True)
...
uid = Column(Integer,ForeignKey('user.id'))
Base.metadata.drop_all()
Base.metadata.create_all()
2.原始外键的使用(手动建立外键)
user = User(username='kangbazi')
session.add(usre)
session.commit()
article = Article(title='钢铁是怎么炼成的,问问西门官人',content="这个棍子掉的很是时候",uid=1)
session.add(article)
session.commit()
uid = session.query(Article).first().uid
user = session.query(User).filter_by(id=uid).first()/.all()
ser = session.query(User).gei(uid)
3.ORM中relationship及backref建立表结构关系
3.1 一对多关系的建立
from sqlalchemy.orm import relationship,backref
class User(Base):
__tablename__ = 'user'
id = Column(Iteger,primary_key=True,autoincrement=True)
...
class Article(Base):
__tablename__ = 'article'
...(同前)
uid = Column(Iteger,ForeignKey(user.id))
author = relationship("User",backref="articles")
...
user = User(...)
article = Article(...)
article.author = user
session.commit()
user = session.query(User).first()
article = user.articles
article.author
3.2一对一关系
3.3多对多关系
third_table = Table(
'tabl3',
Base.metadata,
Column('article_id',Integer,ForeignKey("A.id"),primary_key=True),
Column('tag_id',Integer,ForeignKey('B.id'),primary_key=True)
)
class B(Base):
__tablename__ = 'b'
id = ....
...(其他字段)
attrB = relationship('B',backref='b',secondary=third_table)
a1 = A(...)
a2 = A(...)
b1 = B(...)
b2 = B(...)
a1.table3.append(b1)
a1.table3.append(b2)
a2.table3.append(b1)
a2.table3.append(b2)
session.add([a1,a2])
session.commit()