#python #sqlalchemy
#python #sqlalchemy
Вопрос:
Я хочу получить элемент в своей базе данных, используя его идентификатор, но формат моего идентификатора, когда я его получу, будет <id 1>, но мне нужно только число
Я думаю, что проблема связана с моей __repr__
функцией в моей модели :
class Table(db.Model):
__tablename__ = "tables"
id = db.Column(db.Integer, primary_key = True, autoincrement = True)
family = db.Column(db.String(), nullable = False)
tablename = db.Column(db.String(), unique = True, nullable = False)
def __init__(self, family, tablename):
self.family = family
self.tablename = tablename
def __repr__(self):
return '<id {}>'.format(self.id)
def serialize(self):
return {
'id': self.id,
'family': self.family,
'tablename': self.tablename
}
и я получаю такой идентификатор :
tablesArray = tables.Table.query.all()
for table in tablesArray:
print(tables.Table.query.get(table))
Должен ли я анализировать результат самостоятельно или у него есть функция?
Ответ №1:
Вы можете переформатировать эту __repr__
функцию, чтобы получить целочисленное значение столбца ID.
Может быть, лучше создать __str__
функцию рядом с ней, делая именно это, и вы вызываете этот метод с str(object)
помощью .
Тогда ваш класс таблицы DB выглядит следующим образом:
class Table(db.Model):
__tablename__ = "tables"
id = db.Column(db.Integer, primary_key = True, autoincrement = True)
family = db.Column(db.String(), nullable = False)
tablename = db.Column(db.String(), unique = True, nullable = False)
def __init__(self, family, tablename):
self.family = family
self.tablename = tablename
def __repr__(self):
return '<id {}>'.format(self.id)
def __str__(self):
return self.id
И ваш вызывающий код выглядит так:
(Как отдельная настройка, упрощенная, поскольку запрос можно выполнять напрямую):
tablesArray = tables.Table.query.all()
for table in tablesArray:
print(str(tablesArray))