使用SQLAlchemy,我有以下表格
#Sistema de escuelas por Jenifer
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String, Sequence, ForeignKey
from sqlalchemy.orm import sessionmaker, relationship
###############Creación de la base de datos #########################################
engine=create_engine('sqlite:///:memory:')
Base=declarative_base(engine)
class Estudiante(Base):
__tablename__="alumno"
id=Column(Integer,Sequence('alumno_seq_id'),primary_key=True)
cedula_identidad=Column(String)
nombre_alumno=Column(String)
apellido_alumno=Column(String)
curso_idAlumno=Column(Integer,ForeignKey('curso.id'))
cursos=relationship("Curso",back_populates='estudiantes')
#cursos=relationship("Curso",back_populates='alumno')
def __repr__(self):
return'{}{}'.format(self.nombre_alumno, self.apellido_alumno)
class Curso(Base):
__tablename__='curso'
id=Column(Integer, Sequence('curso_seq_id'),primary_key=True)
nombre_curso=Column(String)
estudiantes=relationship("Estudiante",back_populates='curso')
hora_curso=relationship("Horarios",back_populates='curso_hora')
def __repr__(self):
return'{}'.format(self.nombre_curso)
class Horarios(Base):
__tablename__='horario'
id=Column(Integer, Sequence('horario_seq_id'),primary_key=True)
dia=Column(String)
hora_inicio=Column(String)
hora_fin=Column(String)
profesor_id=Column(Integer,ForeignKey('profesor.id'))
curso_id=Column(Integer,ForeignKey('curso.id'))
curso_hora=relationship("Curso",back_populates='hora_curso')
curso_profe=relationship("Profesor",back_populates='profe_curso')
def __repr__(self):
return'{}{}{}'.format(self.dia,self.hora_inicio, self.hora_fin,\
self.cedula_identidad)
class Profesor(Base):
__tablename__='profesor'
id=Column(Integer, Sequence('profesor_seq_id'),primary_key=True)
cedula_identidad=Column(String)
nombre_profesor=Column(String)
apellido_profesor=Column(String)
profe_curso=relationship("Horarios",back_populates='curso_profe')
def __repr__(self):
return'{}{}{}'.format(self.nombre_profesor, self.apellido_profesor,
self.cedula_identidad)
Profesor.__table__
Estudiante.__table__
Curso.__table__
Horarios.__table__
Base.metadata.create_all(engine)
以及以下预加载数据的功能:
def precargarDatos(ses):
###############ESTUDINTES##################################################
alumno1=Estudiante(nombre_alumno='Raton', apellido_alumno='Perez',
cedula_identidad='1234567-8')
alumno2=Estudiante(nombre_alumno='Hugo', apellido_alumno='Donald',\
cedula_identidad='abcdef123')
alumno3=Estudiante(nombre_alumno='Paco', apellido_alumno='Donald',\
cedula_identidad='abcdef124')
alumno4=Estudiante(nombre_alumno='Luis', apellido_alumno='Donald',\
cedula_identidad='abcdef125')
ses.add(alumno1)
ses.add(alumno2)
ses.add(alumno3)
ses.add(alumno4)
问题是,当我尝试运行此程序时,会出现以下错误:
InvalidRequestError: One or more mappers failed to initialize - can't proceed with initialization of other mappers. Triggering mapper: 'mapped class Estudiante->alumno'. Original exception was: Mapper 'mapped class Curso->curso' has no property 'alumno'
当我尝试使用类Estudiante分配alumno1时,会出现此错误。 我看过类似的文章,但如果问题是函数或表的定义,我不知道在代码中应该修改什么。 如果有人能帮助我,我将不胜感激
多亏了@snakecharmberb,我注意到后面填充的错误,字段不匹配。 现在的代码是:
谢谢你的好意
相关问题 更多 >
编程相关推荐