我需要创建一个学生管理系统,它可以帮助多个老师教多个学生,多个学生可以有多个老师。现在我已经在下面创建了一个代码。另外,如果你认为有更好的方法来实现我的目标,请指导,我对多对多的关系是新的,互联网上有这么多方法,这只是让人困惑:
AssociationTable=db.Table('AssociationTable',
db.Column('id',db.Integer,primary_key=True),
db.Column('teacher_id',db.Integer,db.ForeignKey('Teacher.id')),
db.Column('student_id',db.Integer,db.ForeignKey('Student.id')))
class College(db.Model):
__tablename__='College'
id=db.Column(db.Integer,primary_key=True)
name=db.Column(db.String(30),unique=True,nullable=False)
departments=db.relationship('Department',backref='college',lazy=True)
students=db.relationship('Student',backref='student',lazy=True)
teachers=db.relationship('Teacher',backref='teacher',lazy=True)
def __repr__(self):
return f"College(ID:{self.id}\nName:{self.name})"
class Department(db.Model):
__tablename__='Department'
id=db.Column(db.Integer,primary_key=True)
name=db.Column(db.String(30),nullable=False)
college=db.Column(db.Integer,db.ForeignKey('college.id'),nullable=False)
students=db.relationship('Student',backref='student',lazy=True)
teachers=db.relationship('Teacher',backref='teacher',lazy=True)
def __repr__(self):
return f"Department(ID:{self.id}\nName:{self.name}\nCollege:{self.college})"
class Teacher(db.Model):
__tablename__='Teacher'
id=db.Column(db.Integer,primary_key=True)
name=db.Column(db.String(30),nullable=False)
username=db.Column(db.Integer,nullable=False,unique=True)
address=db.Column(db.String(80),nullable=False)
phone=db.Column(db.String(13),nullable=False)
students=db.relationship('Student',secondary=AssociationTable,backref='Teacher')
section=db.relationship('Student',backref='section',lazy=True)
department=db.Column(db.Integer,db.ForeignKey('department.id'),nullable=False)
college=db.Column(db.Integer,db.ForeignKey('college.id'),nullable=False)
def __repr__(self):
return f"Teacher(ID:{self.id}\nName:{self.name}\nUsername:{self.username}\nAddress:{self.address}\nPhone:{self.phone},Section:{self.section}\nCollege:{self.college}\nDepartment:{self.department})"
class Student(db.Model):
__tablename__='Student'
id=db.Column(db.Integer,primary_key=True)
name=db.Column(db.String(30),nullable=False)
username=db.Column(db.Integer,nullable=False,unique=True)
address=db.Column(db.String(80),nullable=False)
phone=db.Column(db.String(13),nullable=False)
teachers=db.relationship('Teacher',secondary=AssociationTable,backref='Student')
section=db.Column(db.String(3),nullable=False)
department=db.Column(db.Integer,db.ForeignKey('department.id'),nullable=False)
college=db.Column(db.Integer,db.ForeignKey('college.id'),nullable=False)
def __repr__(self):
return f"Student(ID:{self.id}\nName:{self.name}\nUsername:{self.username}\nAddress:{self.address}\nPhone:{self.phone},Section:{self.section}\nCollege:{self.college}\nDepartment:{self.department})"
错误是:
db.create_all() Traceback (most recent call last): File "", line 1, in File "C:\Program Files (x86)\Python36-32\lib\site-packages\flask_sqlalchemy\__init__.py", line 963, in create_all self._execute_for_all_tables(app, bind, 'create_all') File "C:\Program Files (x86)\Python36-32\lib\site-packages\flask_sqlalchemy\__init__.py", line 955, in _execute_for_all_tables op(bind=self.get_engine(app, bind), **extra) File "C:\Program Files (x86)\Python36-32\lib\site-packages\sqlalchemy\sql\schema.py", line 4005, in create_all tables=tables) File "C:\Program Files (x86)\Python36-32\lib\site-packages\sqlalchemy\engine\base.py", line 1940, in _run_visitor conn._run_visitor(visitorcallable, element, **kwargs) File "C:\Program Files (x86)\Python36-32\lib\site-packages\sqlalchemy\engine\base.py", line 1549, in _run_visitor **kwargs).traverse_single(element) File "C:\Program Files (x86)\Python36-32\lib\site-packages\sqlalchemy\sql\visitors.py", line 121, in traverse_single return meth(obj, **kw) File "C:\Program Files (x86)\Python36-32\lib\site-packages\sqlalchemy\sql\ddl.py", line 736, in visit_metadata [t for t in tables if self._can_create_table(t)]) File "C:\Program Files (x86)\Python36-32\lib\site-packages\sqlalchemy\sql\ddl.py", line 1095, in sort_tables_and_constraints dependent_on = fkc.referred_table File "C:\Program Files (x86)\Python36-32\lib\site-packages\sqlalchemy\sql\schema.py", line 3003, in referred_table return self.elements[0].column.table File "C:\Program Files (x86)\Python36-32\lib\site-packages\sqlalchemy\util\langhelpers.py", line 767, in __get__ obj.__dict__[self.__name__] = result = self.fget(obj) File "C:\Program Files (x86)\Python36-32\lib\site-packages\sqlalchemy\sql\schema.py", line 1892, in column tablekey) sqlalchemy.exc.NoReferencedTableError: Foreign key associated with column 'AssociationTable.student_id' could not find table 'Student' with which to generate a foreign key to target column 'id'
我会把assocication_table定义放在文件的末尾。
我正试图将数据放入flask中的表中,但由于某种原因,它为每个字符创建了一个新行,而不是仅仅将完整的字符串放入行中。 代码: 表代码:
用户表结构:用户 id、名称、用户名、密码、创建时间、更新时间 文章表结构:文章 id、标题、内容、创建时间、更新时间 关系表:文章\用户 id、文章id、用户id处于活动状态、创建时间、更新时间 标签 id、名称、用户id、创建时间、更新时间 透视表项目用户与标记的关系。表:文章\用户\标签 标签号,物品号,用户号 我想连接这些表,以便可以像这样或类似的格式访问 并且应该能够创建/更新smth,
基础回购 和存储库类 现在我想使用带有谓词查询的Repo。我需要形成一个谓词,在这个谓词中,我可以根据给定的Bs加载
问题内容: 在关系数据库中,我有一个用户表,一个类别表和一个用户类别表,它们之间存在多对多关系。在Redis中具有这种结构的更好形式是什么? 问题答案: 使用Redis,关系通常由集合表示。一组可用于表示单向关系,因此每个对象需要一组以表示多对多关系。 尝试将关系数据库模型与Redis数据结构进行比较是毫无用处的。使用Redis,所有内容均以非规范化方式存储。 例: 一旦有了此数据结构,就可以使用
所以我试图从数据库模型创建一个EER图,我想做类似的事情。 我想知道是什么导致了这种情况的发生(也许我做错了什么,但现在我想不出任何合理的解释…) 希望有人能对此有所启发。 谢谢!
问题内容: 我在html文件中有一个multiselect像这样: 当我通过以下方式访问flask / python中的mymultiselect字段时: 或通过使用request.args.get函数,它仅返回一个选定的项目。我了解到,要获取所有选定的项目,我必须在字段名称中添加[],如下所示: 通过查看firebug中的发布数据,我可以看到它正在工作,但是我每次尝试在flask / pytho