【发布时间】:2016-10-20 21:46:16
【问题描述】:
我使用 Flask-SQLAlchemy 有下表:
class Posts(db.Model):
id = db.Column(db.Integer, primary_key=True)
hashID = db.Column(db.String(6))
post = db.Column(db.String(500))
def __init__(self, post):
self.hashID = hashid.encode(self.id)
self.post = post
我想使用自动增量 ID 字段创建哈希。我从其他问题中看到db.session.flush() 可以使用,但这不起作用,因为我最好从init 内部获取ID。
上面使用self.id 的代码将不起作用,因为self.id 返回一个NoneType。有没有办法获取将在init 内部生成的 ID?谢谢。
【问题讨论】:
-
您可以将
self添加到会话中,然后刷新,但这不是一个好主意。除了自动增量,您还可以提出一个 ID 生成方案,允许应用生成 ID 而不是 DB。 -
@univerio 应用程序内的自动增量似乎很复杂,可能是更简单的解决方案。
-
我认为问题可能是您覆盖了
db.Model类的 __init__ 方法。见:stackoverflow.com/questions/3279833 -
这里是 super 的东西,用于不覆盖类方法:stackoverflow.com/questions/222877.
-
@PSidhu 您不必为您的 ID 使用递增整数。您可以轻松地为您的 ID 生成 UUID,或自定义 ID 生成方案。
标签: python database flask sqlalchemy flask-sqlalchemy