N
db.ForeignKey(User.id) - without skirts, it's a piton class.db.ForeignKey("user.id") - The name of the table is indicated in the avages.db.ForeignKey(user.id) - there's an object userwhich is not defined in your context of the programme, so Pyton is making a mistake. User)db.ForeignKey("User.id") - Name tables "User" No. "user")UPD: I work.import time
from sqlalchemy import Column, Integer, ForeignKey, DateTime, Boolean, String
from sqlalchemy.orm import relationship
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
class User(Base):
tablename = "user"
id = Column(Integer, primary_key=True)
nickname = Column(String(64), index=True, unique=True)
email = Column(String(120), index=True, unique=True)
tasks_to_do = relationship("Tasks", backref="worker", lazy="dynamic", foreign_keys='[Tasks.assigned_to]')
assigned_tasks = relationship("Tasks", backref="manager", lazy="dynamic", foreign_keys='[Tasks.assigned_by]')
def __repr__(self):
return '<User {}>'.format(self.nickname)
class Tasks(Base):
tablename='tasks'
id = Column(Integer, primary_key=True)
assigned_by = Column(Integer, ForeignKey(User.id))
assigned_to = Column(Integer, ForeignKey(User.id))
body = Column(String(140))
timestamp = Column(DateTime)
state = Column(Boolean)
from sqlalchemy import create_engine
engine = create_engine('sqlite:///')
from sqlalchemy.orm import Session
session = Session(bind=engine)
Base.metadata.create_all(engine)
session.add(User())
session.add(User(nickname="foo"))
session.add(User(nickname="foo2", tasks_to_do=[Tasks()]))
session.commit()
while True:
row = session.query(User).all()
# print(row)
for r in row:
print("{}, {}".format(r.nickname, r.tasks_to_do.all()))
print("\n")
time.sleep(1)