1. 程式人生 > >ORM外鍵關聯

ORM外鍵關聯

cor 外鍵 create col .com blog 開始 完成 OS

#coding=utf-8
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String,DATE,ForeignKey
from sqlalchemy.orm import sessionmaker,relationship


engine = create_engine("mysql+pymysql://root:[email protected]/test1",   #建立數據庫連接
                       encoding=‘utf-8‘, echo=False) #打印echo信息
#寫中文的方式
#engine = create_engine("mysql+pymysql://root:[email protected]/test1?charser=utf8",
#                       encoding=‘utf-8‘, echo=False)
Base = declarative_base()  # 生成orm基類

class Student(Base):
    __tablename__ = ‘student‘
    id = Column(Integer,primary_key =True )
    name = Column(String(32),nullable= False)
    update_time = Column(DATE,nullable =False)

    def __repr__(self):
        return ‘(%s name: %s)‘%(self.id,self.name)

class StudyRecord(Base):
    __tablename__ = ‘study_record‘
    id = Column(Integer,primary_key= True)
    day = Column(Integer,nullable=False)
    status = Column(String(32),nullable=False)
    stu_id = Column(Integer,ForeignKey(‘student.id‘))  #w外鍵創建完成
    #study_obj = query(id= 1)
    #student = query(Student).filter(Student.id == stu_obj.stu_id).first()
    student = relationship(‘Student‘,backref = ‘my_study_record‘)     #StudyRecord可以通過調用Student。
                                                                         # student中可以通過my_study_record查到StudyRecord裏面的內容
    def __repr__(self):
        return ‘(%s name: %s)‘%(self.id,self.day)

Base.metadata.create_all(engine)

Session_class = sessionmaker(bind=engine)
session = Session_class()
# s1 = Student(name = ‘zq‘,update_time = ‘2018-01-01‘)
# s2 = Student(name = ‘xiaohong‘,update_time = ‘2018-01-01‘)
# s3 = Student(name = ‘xiaoming‘,update_time = ‘2018-01-01‘)
# s4 = Student(name = ‘xiaohua‘,update_time = ‘2018-01-01‘)
# study_obj1 = StudyRecord(day = 1,status = ‘YES‘,stu_id =1 )
# study_obj2 = StudyRecord(day = 2,status = ‘YES‘,stu_id =1 )
# study_obj3 = StudyRecord(day = 3,status = ‘NO‘,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])   #pyhton中不能同時創建,會出錯
#第二個表的id不是從1開始得,為什麽?
#session.add_all([s1,s2,s3,s4])
# session.add_all([study_obj1,study_obj2,study_obj3,study_obj4])
# session.commit()
stuobj = session.query(Student).filter(Student.name==‘zq‘).first()
print stuobj.my_study_record

ORM外鍵關聯