Submitted by martinez on Sun, 09/22/2019 - 02:01
Пример 1 - прочитать из базы значение
команда |
состояние соединения |
последняя SQL |
комментарии |
---|
engine = create_engine(f'postgresql://...') |
нет соединения |
|
|
result = engine.execute("select name from host LIMIT 10") |
idle in transaction |
select name from host LIMIT 10 |
данные уже в result |
Submitted by martinez on Sat, 09/21/2019 - 10:08
Engine.connect() vs Engine.raw_connection()
первый возвращает класс sqlalchemy.engine.base.Connection, второй sqlalchemy.pool.base._ConnectionFairy. Оба являются прокси к настоящему соединению, у обоих close() просто возвращает соединение в пул, однако второе считается более близким к DBAPI. например только из второго можно получить курсор.
Submitted by martinez on Sat, 09/21/2019 - 00:16
методы интроспекции
type(object)
возвращает объект type который показывает тип object, то же самое что и object.__class__
str(object)
вызывает object.__str()__, если __str__ нет, то возвращается repr(object). пишут что __str__ должна возвращать приятное для человека описание
repr(object)
пытается вернуть строчку, которая должна в eval() создавать этот объект, иначе возвращает в угловых скобках имя типа и адрес, вывод функции можно контролировать через __repr__
Submitted by martinez on Fri, 09/20/2019 - 19:49
Применение SQLAlchemy Core с точки зрения образования соединений и транзакций с базой.
Как сказано в документации, есть Engine, который скрывает за собой пул и диалект.
подход такой: нужно брать соединения, делать некий логически связанный блок действий, и вызывать conn.close(), которое возвращает соединение в пул.
соединение находится всегда в транзакции.
В процессе работы имеете действие с
если использовать соединения для выборки данных и оставить его у себя