Denis
Должна быть одна точка входа
løst
session емнип открывает транзакцию при первом обращении к бд и держать он ее будет пока ты либо явно не закроешь, либо пока не получишь какой-нибудь эксепшн
løst
sql-ный имеется ввиду
S
ты транзакции там закрываешь? или у тебя autocommit проставлен?
Нет, я просто делаю session.query. Больше никаких операций я не делаю. Мне всего то нужно селектнуть определенную таблицу
løst
ну вот скорее всего ты и не видишь изменений потому что ты постоянно селектишь в одной и той же открытой транзакции
Tishka17
почему вообще левое приложение имеет доступ в твою БД?
løst
mvcc никто не отменял
S
"не твоим приложением"- это как?
Я просто селект делают, а приложение не левое, а мной администрируемое, но не разработанное)
Alex
почему вообще левое приложение имеет доступ в твою БД?
это не столь важно, к базе данных могут быть подключены в том чилсе и разные типы клиентов.
Tishka17
кто попало пишет ,кто попало читает и система не проектирвоалась с учетом требования нескольких клиентов БД
S
ну то есть твое приложение левое и лезет в чужую базу?
Да, для него и нужно бд. Я хочу автоматизировать ряд рутинных задач, поэтому и пиши на питоне своё приложение, которое будет вытаскивать из определённой таблицы нужную мне инфу
Alex
ты понимаешь как работают транзакции и в какой момент открывается транзакция в алхимии?
Alex
кстати что за база?
S
ты понимаешь как работают транзакции и в какой момент открывается транзакция в алхимии?
Не особо, если честно. По вашему предыдущему комменту я понял, что нужно уделить больше времени и прочитать. База - MySQL 5.7
Tishka17
1) одна бд 2) небольшая нагрузка, нет необходимости репликации 3) есть некое приложение, которое пишет в эту бд какую-то информацию. Я хочу сделать что-то типа API (моё приложение), которе подконнектится к этой бд, в которую что-то пишет некое приложение, и иногда будет делать запрос, в котором будет отображена информация, записанная не моим приложением. Так вот, когда я запускаю своё приложение, все ок, я вижу таблицы, делаю запросы и все ок. Как только стороннее приложение внесло какие-то правки или добавило строку, то у меня они не отображаются, информация актуальна только на момент запуска моего приложения. Вот engine.execute отображает все ок, всегда актуальная инфа. Но если с помощью session, то инфа не обновляется. Цель - получать актуальную инфа с помощью session. Возможно ли это?
ну пиши свои данные куда-то не туда, куда пишет основное приложение
Tishka17
вообще не понял при чем тут рефлексия
Alex
у MySQL по-умолчанию если что режим REPEATABLE READ
Tishka17
да?
Tishka17
прикольно
Alex
да?
да
Alex
поправка у InnoDB движка
S
а сессию в какой момент создаешь и закрываешь?
‘’’Base = automap_base engine = create_engine(uri) session = orm.Session(engine)’’’ А уже потом идут декларативно описание таблицы
Alex
эээ
S
ну пиши свои данные куда-то не туда, куда пишет основное приложение
Так я не пишу, просто селект делаю, уже раз 10 написал)
Tishka17
Так я не пишу, просто селект делаю, уже раз 10 написал)
так тогда ещё рз вопрос: тебе надо следить за изменениями в БД?
Alex
вангую что он создает глобальную сессию на старте программы и никогда ее не закрывает
S
так тогда ещё рз вопрос: тебе надо следить за изменениями в БД?
Цель моя основаная не следить, а получать актуальную инфу посредством моего запроса. Возможно на низком уровне - нужно как-то слушать ивенты и тд
ᅠᅠᅠᅠ
Я чего - то не понимаю?
ᅠᅠᅠᅠ
next_x = self.x_values[-1] + x_step TypeError: unsupported operand type(s) for +: 'int' and 'list'
Alex
нельзя складывать список и число
ᅠᅠᅠᅠ
почему у меня последний элемент списка считается как список?
ᅠᅠᅠᅠ
там последний элемент [-1]
Tishka17
наконец две ветки обсуждения слились в одну
Alex
почему у меня последний элемент списка считается как список?
возможно у тебя в последнем элементе список
ᅠᅠᅠᅠ
хм
Alex
или x_step вообще-то список
Alex
Я думаю, что ты правильно вангуешь
марш читать основы баз данных
ᅠᅠᅠᅠ
да, x_step список
ᅠᅠᅠᅠ
мда
ᅠᅠᅠᅠ
спасибо
Alex
Я думаю, что ты правильно вангуешь
я тебя поздравляю. ты написал эталонную хуйню. поясню, т.к. ты не закрываешь сессию и не откатываешь транзакцию в момент первого запроса к базе данных у тебя открывается транзакция, + ты получаешь снапшот данных в этот момент, при повторном запросе база данных вернет тебе тот же снапшот данных (т.к. REPEATABLE READ).
Alex
сессия в алхимии равно как и транзакция в базе данных не должна жить дольше необходимого.
Anonymous
Ребята что такое {}.format в питоне как это загуглить
Alex
так и гуглить
Anonymous
спасибо а то гугл выдает разную информацию
løst
сессия в алхимии равно как и транзакция в базе данных не должна жить дольше необходимого.
стоит добавить еще что длинные транзакции часто ведут к очень хуёвым последствиям
Tishka17
ну длинные пустые транзакции не должны
Tishka17
так что про repeatable read важное замечание
S
сессия в алхимии равно как и транзакция в базе данных не должна жить дольше необходимого.
Вы все правильно написали, спасибо. В docs.sqlalchemy в общем то так и написано. Сделал запрос, затем закоммитил, если исключение - роллбэк и в финале закрыл
S
Спасибо всем за помощь, для меня вопрос не был тривиальным
løst
ну длинные пустые транзакции не должны
это уже зависит от конкретной бд, в mysql да, пока ты первый мув не сделаешь или не укажешь модификатор with consistent snapshot - снапшота не будет
Alex
close() автоматически сделает ролбек транзакции
Tishka17
close() автоматически сделает ролбек транзакции
вот да, но поче-муто рпинято явно ролбэк писать
Aragaer
наверно потому что далеко не всегда нужно делать close
Sasha
что думаете о руби в 2019 году? =)
🍁 Jaŭhien
руби умирает
I
привет , подскажите пожалуйста такой момент: есть скрипт, который содержит цикл который перебирает транзакции. У этих транзакций есть разная сумма, в зависимости от суммы мне нужно делать то или иное, выглядит это след. образом: for transaction in transactions: if transaction.amount < 5000: # do stuff A if 5000 < transaction.amount <=30000 # do stuff B if transaction.amount > 30000: # do stuff C вопрос следующий: значит ли то , что если сумма транзакции меньше 30000 , выполнятся все действия А,В,С ? И если да (а они выполнятся) как это предотвратить, но чтобы цикл дальше перебирал транзакции (break я так понимаю цикл прирвет вовсе)
Je
что думаете о руби в 2019 году? =)
нередко втречаю в вакансиях, что предлагают переписывать старое руби-поделие но новое го-поделие, идет в одном уровне, что и пыха
Sasha
Пасибо. Меня просто спросил знакомый, который идет руби джуном и я решил просто скопипастить мнения ему
Je
Пасибо. Меня просто спросил знакомый, который идет руби джуном и я решил просто скопипастить мнения ему
ну пусть идет и сразу переучивается в го, когда будут увольнять рубистов - он уже будет готов к этому
Aleksandr
следующая итерация цикла
Sasha
ну пусть идет и сразу переучивается в го, когда будут увольнять рубистов - он уже будет готов к этому
Да вроде работы полно сейчас. Кучу же стартапов понаписали, которые до сих пор работают.
Misha
там условия не сработают
I
там условия не сработают
ну вообще вроде да, не должны
I
вроде все четко
I
но continue на всякий поставил