Comments 10
Один я не знал, что так можно?
def __repr__(self):
return "<{0.__class__.__name__}(id={0.id!r})>".format(self)
0
Судя по всему да.
Вообще можно даже значение словаря получить по ключу (пишите так же квадратные скобки, но значение ключа без кавычек) или значение массива по индексу.
0
Я, честно говоря, не очень внимательно документацию читал, но не помню там описания такого трюка. Ну и вообще, это какая-то дверь в ад, типа eval и exec:
class Tst:
def __init__(self):
self._a = 1
@property
def a(self):
print('hahaha')
return self._a
if __name__ == '__main__':
tst = Tst()
print('{0.a}'.format(tst))
0
Как по мне — f-strings тут к месту
def __repr__(self):
return f"<{type(self).__name__}(id={self.id})>"
+1
Тяжеловатая статья. Тем кто собирается изучить SQLAlchemy предлагаю начать с Мега-учебника Гринберга и после сразу переключиться на официальную документацию.
По моему мнению декларативное описание несколько чудное и отношения раскрыты недостаточно (да я видел слово «основы» в названии).
Непонятно почему используется VARCHAR, а не String.
По моему мнению декларативное описание несколько чудное и отношения раскрыты недостаточно (да я видел слово «основы» в названии).
Непонятно почему используется VARCHAR, а не String.
0
Статическая типизация по дефолту и эти сахарные-этажи в формат-синтаксисе это фишечки питона 3.6+
Неплохая статья но мне кажется не выдержан темп, для какого-то «промо-обучения» все скомкано все и сумбурно и текст оформлен некрасиво, а если «для тех кто уже работает с алхимией» — то обозначенные кейсы обычные, в документации все описано (за исключением конечно "<{0.__class__.__name__}(id={0.id!r})>" :), но это питон 3.6)
в уроке 7 насколько я разглядел опечатка с «uselist=False» он внутри скобки с and_(). И вообще, может я конечно чего-то не понял — но урок 7 смотрится как-то вообще оторванным от контекста — во первых из только текста этого урока непонятно к какой родительской модельке относится этот релатион, и определение моделек CadreMovement, EmployeeWithCadreMovements и т.п. выше не описано
Еще круто бы в статье описать действительно сложные случаи в алхимии как например использование CTE и рекурсивных запросов или про правильное понимание .correlate() и когда и как его нужно использовать. Сам последнее время ковыряюсь с различными JSON-функциями postgres типа jsonb_array_elements чтоб их впилить в проект на алхимии, в этой области тоже довольно много интересного при составлении запросов :).
И вообще с итогом не соглашусь всетаки, случаи когда алхимический запрос именно будет «нечитаемым» перед аналогичным написанием в программе питоне в сыром виде — редки. Да он может «по строчкам» оказаться больше, однако читать его будет гораздо легче, потому что первостепенно — гораздо проще его можно разложить на смысловые блоки. Алхимия тем и хороша что довольно гибка и огромное количество фишек которые предоставляет база — можно воплотить с помощью нее.
Неплохая статья но мне кажется не выдержан темп, для какого-то «промо-обучения» все скомкано все и сумбурно и текст оформлен некрасиво, а если «для тех кто уже работает с алхимией» — то обозначенные кейсы обычные, в документации все описано (за исключением конечно "<{0.__class__.__name__}(id={0.id!r})>" :), но это питон 3.6)
в уроке 7 насколько я разглядел опечатка с «uselist=False» он внутри скобки с and_(). И вообще, может я конечно чего-то не понял — но урок 7 смотрится как-то вообще оторванным от контекста — во первых из только текста этого урока непонятно к какой родительской модельке относится этот релатион, и определение моделек CadreMovement, EmployeeWithCadreMovements и т.п. выше не описано
Еще круто бы в статье описать действительно сложные случаи в алхимии как например использование CTE и рекурсивных запросов или про правильное понимание .correlate() и когда и как его нужно использовать. Сам последнее время ковыряюсь с различными JSON-функциями postgres типа jsonb_array_elements чтоб их впилить в проект на алхимии, в этой области тоже довольно много интересного при составлении запросов :).
И вообще с итогом не соглашусь всетаки, случаи когда алхимический запрос именно будет «нечитаемым» перед аналогичным написанием в программе питоне в сыром виде — редки. Да он может «по строчкам» оказаться больше, однако читать его будет гораздо легче, потому что первостепенно — гораздо проще его можно разложить на смысловые блоки. Алхимия тем и хороша что довольно гибка и огромное количество фишек которые предоставляет база — можно воплотить с помощью нее.
0
Вот у меня один вопрос — в этом мире кроме TypeOrm и EntityFramework есть хоть одна orm которая может генерить миграции по изменениям в коде моделей?
0
Sign up to leave a comment.
Крадущийся тигр, затаившийся SQLAlchemy. Основы