跟踪插入SQLAlchemy

时间:2020-10-27 14:18:59

标签: python sqlalchemy flask-sqlalchemy

我正在使用flask-SQLAlchemy在MySQL数据库中写入条目。这些条目具有特定的ID字段,该字段由MySQL自动填充。而且我想追踪。

让我明白我的意思。我首先要部分编写我收到对API的查询的信息。我写了所有内容,但没有写回应,因为我没有。然后,一旦获得响应,我想获取插入的行并编写响应文件:

型号:

class QueriesDB(db.Model):

    __tablename__ = 'queries'

    id_query = db.Column(INTEGER(unsigned=True), primary_key=True, nullable=False, autoincrement=True)
    id_user = db.Column(INTEGER(unsigned=True), db.ForeignKey(UsersDB.id_user), nullable=True)
    datetime = db.Column(db.TIMESTAMP, nullable=False, default=datetime.utcnow)
    IP = db.Column(db.String(39), nullable=False)
    header = db.Column(LONGTEXT, nullable=False)
    response = db.Column(LONGTEXT, nullable=True)
    answered = db.Column(db.Boolean, nullable=False)

我如何插入它:

valid_query = QueriesDB(id_user=self.id_user, IP=self.request.remote_addr,
                        header=str(dict(self.request.headers)), answered=False)
db.session.add(valid_query)
db.session.commit()

现在,我正在考虑通过使用id_query获得该特定行,并写出Answer = True以及响应正文。但由于我实际上并不知道id_query,因此不确定最好的方法是什么。

在执行commit()时是否有一种简单的方法来保留id_queries?

这当然可以是设计问题。你有什么想法?

1 个答案:

答案 0 :(得分:1)

您应该使用valid_query = QueriesDB(id_user=self.id_user, IP=self.request.remote_addr, header=str(dict(self.request.headers)), answered=False) db.session.add(valid_query) db.session.flush() # you can get autoincremented number from DB print(valid_query.id_query) db.session.commit() https://docs.sqlalchemy.org/en/13/orm/session_api.html#sqlalchemy.orm.session.Session.flush

{{1}}