@ru_python

Страница 9756 из 9768
S
31.07.2019
13:19:36
средствами БД
Средствами бд не вариант, мне всего то нужно иногда заглядываться в таблицу и проверять значения (появилось что-то новое и т.д.). Можно сделать это с помощью engine.execute, но это будет raw, а я хотел с помощь automap или declarative_base

Alex
31.07.2019
13:21:33
id1 = '3323' mydbc.execute("Select * from user where id=%s",(id1)) row = mydbc.fetchone()

Google
Alex
31.07.2019
13:21:43
че я все правильно указал

не пашет)

S
31.07.2019
13:23:10
не понял, как связна необходимость заглядвать в таблицу и репликация
Так это вы подсказали мне про репликацию. А вопрос у меня был изначально про замаппиться к бд и смотреть там изменения, которые не отображаются там с помощью session, если кто-то внёс что-то туда вручную

Alex
31.07.2019
13:23:13
обязательная? ЛОЛ

S
31.07.2019
13:24:25
цель какая?
Ну я имел ввиду по зарефлекченную, она типа как вторая. Я может сформулировал не правильно. Сейчас попробую по другому

Tishka17
31.07.2019
13:24:51
1. сколько БД? 2. почему столько? 3. какую задачу пытаешься решить?

lost
31.07.2019
13:30:08
видимо какой-то унылый шардинг

Google
S
31.07.2019
13:31:26
цель какая?
1) одна бд 2) небольшая нагрузка, нет необходимости репликации 3) есть некое приложение, которое пишет в эту бд какую-то информацию. Я хочу сделать что-то типа API (моё приложение), которе подконнектится к этой бд, в которую что-то пишет некое приложение, и иногда будет делать запрос, в котором будет отображена информация, записанная не моим приложением. Так вот, когда я запускаю своё приложение, все ок, я вижу таблицы, делаю запросы и все ок. Как только стороннее приложение внесло какие-то правки или добавило строку, то у меня они не отображаются, информация актуальна только на момент запуска моего приложения. Вот engine.execute отображает все ок, всегда актуальная инфа. Но если с помощью session, то инфа не обновляется. Цель - получать актуальную инфа с помощью session. Возможно ли это?

Romuch
31.07.2019
13:32:46
Мб удаляешь данные случайно где то ?

lost
31.07.2019
13:32:50
в sqlalchemy по дефолту автокоммит = false

Romuch
31.07.2019
13:33:09
И комит тоже вещь такая себе

lost
31.07.2019
13:33:12
ты транзакции там закрываешь? или у тебя autocommit проставлен?

Denis
31.07.2019
13:33:18
Должна быть одна точка входа

lost
31.07.2019
13:34:00
session емнип открывает транзакцию при первом обращении к бд и держать он ее будет пока ты либо явно не закроешь, либо пока не получишь какой-нибудь эксепшн

sql-ный имеется ввиду

S
31.07.2019
13:34:16
ты транзакции там закрываешь? или у тебя autocommit проставлен?
Нет, я просто делаю session.query. Больше никаких операций я не делаю. Мне всего то нужно селектнуть определенную таблицу

lost
31.07.2019
13:35:06
ну вот скорее всего ты и не видишь изменений потому что ты постоянно селектишь в одной и той же открытой транзакции

Tishka17
31.07.2019
13:35:19
почему вообще левое приложение имеет доступ в твою БД?

lost
31.07.2019
13:35:19
mvcc никто не отменял

S
31.07.2019
13:35:59
"не твоим приложением"- это как?
Я просто селект делают, а приложение не левое, а мной администрируемое, но не разработанное)

Tishka17
31.07.2019
13:36:31
Alex
31.07.2019
13:36:34
почему вообще левое приложение имеет доступ в твою БД?
это не столь важно, к базе данных могут быть подключены в том чилсе и разные типы клиентов.

Tishka17
31.07.2019
13:36:47
кто попало пишет ,кто попало читает и система не проектирвоалась с учетом требования нескольких клиентов БД

Google
S
31.07.2019
13:37:43
ну то есть твое приложение левое и лезет в чужую базу?
Да, для него и нужно бд. Я хочу автоматизировать ряд рутинных задач, поэтому и пиши на питоне своё приложение, которое будет вытаскивать из определённой таблицы нужную мне инфу

Alex
31.07.2019
13:38:01
ты понимаешь как работают транзакции и в какой момент открывается транзакция в алхимии?

кстати что за база?

S
31.07.2019
13:39:17
ты понимаешь как работают транзакции и в какой момент открывается транзакция в алхимии?
Не особо, если честно. По вашему предыдущему комменту я понял, что нужно уделить больше времени и прочитать. База - MySQL 5.7

Tishka17
31.07.2019
13:39:52
1) одна бд 2) небольшая нагрузка, нет необходимости репликации 3) есть некое приложение, которое пишет в эту бд какую-то информацию. Я хочу сделать что-то типа API (моё приложение), которе подконнектится к этой бд, в которую что-то пишет некое приложение, и иногда будет делать запрос, в котором будет отображена информация, записанная не моим приложением. Так вот, когда я запускаю своё приложение, все ок, я вижу таблицы, делаю запросы и все ок. Как только стороннее приложение внесло какие-то правки или добавило строку, то у меня они не отображаются, информация актуальна только на момент запуска моего приложения. Вот engine.execute отображает все ок, всегда актуальная инфа. Но если с помощью session, то инфа не обновляется. Цель - получать актуальную инфа с помощью session. Возможно ли это?
ну пиши свои данные куда-то не туда, куда пишет основное приложение

вообще не понял при чем тут рефлексия

Alex
31.07.2019
13:40:34
у MySQL по-умолчанию если что режим REPEATABLE READ

Tishka17
31.07.2019
13:40:45
да?

прикольно

Alex
31.07.2019
13:40:50
да?
да

поправка у InnoDB движка

S
31.07.2019
13:41:43
а сессию в какой момент создаешь и закрываешь?
‘’’Base = automap_base engine = create_engine(uri) session = orm.Session(engine)’’’ А уже потом идут декларативно описание таблицы

Alex
31.07.2019
13:42:03
эээ

S
31.07.2019
13:42:19
ну пиши свои данные куда-то не туда, куда пишет основное приложение
Так я не пишу, просто селект делаю, уже раз 10 написал)

Tishka17
31.07.2019
13:42:45
Так я не пишу, просто селект делаю, уже раз 10 написал)
так тогда ещё рз вопрос: тебе надо следить за изменениями в БД?

Alex
31.07.2019
13:43:14
вангую что он создает глобальную сессию на старте программы и никогда ее не закрывает

S
31.07.2019
13:44:00
так тогда ещё рз вопрос: тебе надо следить за изменениями в БД?
Цель моя основаная не следить, а получать актуальную инфу посредством моего запроса. Возможно на низком уровне - нужно как-то слушать ивенты и тд

Azik
31.07.2019
13:44:20
Я чего - то не понимаю?

Google
Azik
31.07.2019
13:44:21
next_x = self.x_values[-1] + x_step TypeError: unsupported operand type(s) for +: 'int' and 'list'

Alex
31.07.2019
13:44:33
нельзя складывать список и число

Azik
31.07.2019
13:44:40
почему у меня последний элемент списка считается как список?

там последний элемент [-1]

Tishka17
31.07.2019
13:44:54
наконец две ветки обсуждения слились в одну

Alex
31.07.2019
13:45:00
почему у меня последний элемент списка считается как список?
возможно у тебя в последнем элементе список

Azik
31.07.2019
13:45:17
хм

Alex
31.07.2019
13:45:19
или x_step вообще-то список

Я думаю, что ты правильно вангуешь
марш читать основы баз данных

Azik
31.07.2019
13:46:32
да, x_step список

мда

спасибо

Alex
31.07.2019
13:48:44
Я думаю, что ты правильно вангуешь
я тебя поздравляю. ты написал эталонную хуйню. поясню, т.к. ты не закрываешь сессию и не откатываешь транзакцию в момент первого запроса к базе данных у тебя открывается транзакция, + ты получаешь снапшот данных в этот момент, при повторном запросе база данных вернет тебе тот же снапшот данных (т.к. REPEATABLE READ).

сессия в алхимии равно как и транзакция в базе данных не должна жить дольше необходимого.

Shadow
31.07.2019
13:49:17
Ребята что такое {}.format в питоне как это загуглить

Alex
31.07.2019
13:49:26
так и гуглить

Shadow
31.07.2019
13:50:04
спасибо а то гугл выдает разную информацию

Google
lost
31.07.2019
13:50:40
сессия в алхимии равно как и транзакция в базе данных не должна жить дольше необходимого.
стоит добавить еще что длинные транзакции часто ведут к очень хуёвым последствиям

Tishka17
31.07.2019
13:55:51
ну длинные пустые транзакции не должны

так что про repeatable read важное замечание

S
31.07.2019
13:57:25
сессия в алхимии равно как и транзакция в базе данных не должна жить дольше необходимого.
Вы все правильно написали, спасибо. В docs.sqlalchemy в общем то так и написано. Сделал запрос, затем закоммитил, если исключение - роллбэк и в финале закрыл

Спасибо всем за помощь, для меня вопрос не был тривиальным

lost
31.07.2019
13:59:12
ну длинные пустые транзакции не должны
это уже зависит от конкретной бд, в mysql да, пока ты первый мув не сделаешь или не укажешь модификатор with consistent snapshot - снапшота не будет

Alex
31.07.2019
13:59:17
close() автоматически сделает ролбек транзакции

Tishka17
31.07.2019
13:59:35
close() автоматически сделает ролбек транзакции
вот да, но поче-муто рпинято явно ролбэк писать

Aragaer
31.07.2019
14:00:10
наверно потому что далеко не всегда нужно делать close

Shieldy
31.07.2019
14:02:35
Добро пожаловать, @sa_ru_man! Не забудь ознакомиться с правилами чата. https://t.me/ru_python/802295

Sasha
31.07.2019
14:15:27
что думаете о руби в 2019 году? =)

Андрей
31.07.2019
14:16:13
?? Eugene
31.07.2019
14:16:18
руби умирает

Ilya
31.07.2019
14:16:52
привет , подскажите пожалуйста такой момент: есть скрипт, который содержит цикл который перебирает транзакции. У этих транзакций есть разная сумма, в зависимости от суммы мне нужно делать то или иное, выглядит это след. образом: 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 я так понимаю цикл прирвет вовсе)

Страница 9756 из 9768