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

Tishka17
31.07.2019
13:20:05

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
че я все правильно указал
не пашет)

Tishka17
31.07.2019
13:22:36
(id1, )

S
31.07.2019
13:23:10

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

Tishka17
31.07.2019
13:23:29

☭
31.07.2019
13:24:12

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


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

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

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

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

Alex
31.07.2019
13:35:55

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

Alex
31.07.2019
13:37:40

S
31.07.2019
13:37:43

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

S
31.07.2019
13:39:17


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

Alex
31.07.2019
13:42:03
эээ

S
31.07.2019
13:42:19

Tishka17
31.07.2019
13:42:45

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

lost
31.07.2019
13:43:43

S
31.07.2019
13:44:00

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

Google

S
31.07.2019
13:44:20

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
Спасибо всем за помощь, для меня вопрос не был тривиальным

Alex
31.07.2019
13:58:48

lost
31.07.2019
13:59:12

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

Tishka17
31.07.2019
13:59:35

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 я так понимаю цикл прирвет вовсе)