- #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:123456@192.168.70.129/test1", #建立数据库连接
- encoding=utf-8, echo=False) #打印 echo 信息
- # 写中文的方式
- #engine = create_engine("mysql+pymysql://root:123456@192.168.70.129/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
来源: http://www.bubuko.com/infodetail-2545953.html