我很难用SQLALchemy在sqlite3数据库中为表创建索引。每次通过celery的定期任务将一行添加到数据库时,该行都会被索引。
也许我的理解是有缺陷的。我认为db.Index('scheduleId', Schedule.taskId)
会在第一行数据到达数据库后自动创建一个新的'scheduleId'列,其值为1?
app / model.py
class Schedule(db.Model):
__tablename__ = 'schedule'
taskId = db.Column(db.String(50), primary_key=True)
def __init__(self, **kwargs):
super(Schedule, self).__init__(**kwargs)
db.Index('scheduleId', Schedule.taskId)
app / tasks / test.py
@periodic_task(run_every=crontab(minute="*"), bind=True)
def periodic_run_get_manifest(self):
with app.app_context():
task_id = self.request.id
s = Schedule()
s.taskId = task_id
db.session.add(s)
db.session.commit()
rowId = db.session.query(Schedule).order_by(Schedule.scheduleId.desc()).first()
运行定期任务时,出现以下错误:
AttributeError:类型对象“ Schedule”没有属性“ scheduleId”
答案 0 :(得分:0)
修改您的课程模型
class Schedule(db.Model):
__tablename__ = 'schedule'
taskId = db.Column(db.String(50), unique=True)
scheduleId = db.Column(db.Integer, primary_key=True) # will create index and autoincrement both