Python sqlalchemy orm 外鍵關聯

建立外鍵關聯 並經過relationship 互相調用mysql

如圖:sql

 

實現代碼:數據庫

import sqlalchemy

# 調用連接數據庫
from sqlalchemy import create_engine
# 調用基類Base from sqlalchemy.ext.declarative import declarative_base
# 調用Column建立字段 加類型 from sqlalchemy import Column, Integer, String,DATE,ForeignKey
# 調用操做連接,反查 from sqlalchemy.orm import sessionmaker,relationship # create_engine 連接數據庫 mysql+pymysql:連接對象//用戶名:密碼@主機/DB # encoding='utf-8' 連接字符集 ,echo=True 把全部信息打印出來 engine = create_engine("mysql+pymysql://root:123456@192.168.1.154/xiang",encoding='utf-8', #echo=True ) # 生成orm基類 Base = declarative_base() class Student(Base): __tablename__ = "student" # 設置id爲主鍵 id = Column(Integer,primary_key=True) name = Column(String(32),nullable=False) register_date = Column(DATE,nullable=False) def __repr__(self): return "<%s name:%s>"%(self.id,self.name) class StudyRecord(Base): __tablename__ = "study_record" # 設置id爲主鍵 id = Column(Integer,primary_key=True) day = Column(Integer,nullable=False) status = Column(String(32),nullable=False) # 將student表的id字段 設置爲外鍵 stu_id = Column(Integer,ForeignKey("student.id")) # -容許你在Student表裏經過backref字段反向查出全部它在表裏的關聯項- # study_record表 經過student字段查找Student表內全部字段 # student表 經過my_study_record來訪問study_record表內字段 # 注:relationship是orm本身經過在內存中類對象關聯實現。 student = relationship("Student", backref="my_study_record") def __repr__(self): return "<%s day:%s status:%s>" %(self.student.name,self.day,self.status) #---------------1.建立表-----------------# # 建立表結構 # Base.metadata.create_all(engine) #---------------------------------------# # bind=engine 綁定engine socket實例 Session_class = sessionmaker(bind=engine) # 生成session實例,如同pymysql內的cursor Session = Session_class() #---------------2.插入數據-----------------# # Student 建立插入數據 # s1 = Student(name="kevin",register_date="2014-05-21") # s2 = Student(name="Jack",register_date="2014-05-22") # s3 = Student(name="Rain",register_date="2014-05-23") # s4 = Student(name="Eric",register_date="2014-05-24") # StudyRecord 建立插入數據 # study_obj1 = StudyRecord(day=1,status="YES",stu_id=1) # study_obj2 = StudyRecord(day=2,status="NO",stu_id=1) # study_obj3 = StudyRecord(day=3,status="YES",stu_id=1) # study_obj4 = StudyRecord(day=1,status="YES",stu_id=2) # 批量插入字段數據 # Session.add_all([s1,s2,s3,s4,study_obj1,study_obj2,study_obj3,study_obj4,]) #---------------------------------------# #---------------3.查看數據-----------------# # 指定查看"kevin"學員 stu_obj = Session.query(Student).filter(Student.name=="kevin").first() print(stu_obj.my_study_record) #---------------------------------------# # 執行事務 Session.commit()
相關文章
相關標籤/搜索