
Alexander
29.11.2018
11:02:28

Iliya
29.11.2018
11:02:41

Ruslan
29.11.2018
11:02:49
ага, типа я это не пробовал
есть три таблички в виде классов от Base, одна табличка связывает две другие и содержит дополнительные данные

Google

Alexander
29.11.2018
11:03:29

Ruslan
29.11.2018
11:03:53
ты его сначала покажи, а мы решим, надо или нет ?

Маришка
29.11.2018
11:04:30
Так релейшны настрой

Ruslan
29.11.2018
11:04:39
типа M2M

Маришка
29.11.2018
11:05:13
Выглядит странно по описанию

Andrew
29.11.2018
11:06:31

Alexander
29.11.2018
11:06:40

Ruslan
29.11.2018
11:06:51
не могу это описать на алхимии

Маришка
29.11.2018
11:07:00
session.query(t1).join(t2).join(t3)

Ruslan
29.11.2018
11:07:17
а теперь представим, что session на asyncio

Nikolay
29.11.2018
11:07:20
А теперь на raw sql

Google

Andrew
29.11.2018
11:07:29

Ruslan
29.11.2018
11:07:42

Nikolay
29.11.2018
11:07:54
Ну тогда что ещё надо

Ruslan
29.11.2018
11:08:06
поэтому я и говорю, пример есть?
небольiой ньюанс, всё на asyncio

Nikolay
29.11.2018
11:08:46
А, в питоне2 такого нет
Непомогу

Ruslan
29.11.2018
11:09:02
в питоне 3.6

Nikolay
29.11.2018
11:09:11
Слишком сыро

Ruslan
29.11.2018
11:10:17
короче, непонятно, толи колдовать на уровне класса, описывающего таблицу, с параметрами relationship, то ли на уровне кода, который формирует запрос перед его выполнением

Nikolay
29.11.2018
11:10:33
Ладно я саппорчу код на 2,7 , так я ещё и размножают код на питоне2

Andrew
29.11.2018
11:10:55

Ruslan
29.11.2018
11:11:01
как правильно?

Andrew
29.11.2018
11:12:25
как правильно?
При выполнении в сессии можно получать сразу связанные таблицы. А можно не получать)

Tigran
29.11.2018
11:12:39

Ruslan
29.11.2018
11:12:52

Andrew
29.11.2018
11:13:39

Ruslan
29.11.2018
11:14:51
Ну так пример кейса?
три таблицы, объявленные классами, нужен пример выборки с двумя JOIN, желательно с настройкой этой хрени в классах

Andrew
29.11.2018
11:16:31
Выборки чего из чего? Слишком общая формулировка, много комбинаций. Вообще я настаиваю на изучении документации. И встроенный построитель запросов в помощь

Google

Ruslan
29.11.2018
11:21:24
непонятно как второй join туда присобачить

Andrew
29.11.2018
11:22:45

Ruslan
29.11.2018
11:22:56
пример

Andrew
29.11.2018
11:23:04
Позже. Жру-с

Ruslan
29.11.2018
11:23:24
пробовал так:
# symbols = relationship(
# 'finance_portfolioitem',
# secondary='finance_symbol',
# primaryjoin='finance_portfolioitem.portfolio_id == finance_portfolio.id',
# secondaryjoin='finance_portfolioitem.symbol_id == finance_symbol.id'
# )

Admin
ERROR: S client not available

Andrew
29.11.2018
11:24:03
Ненужные джойны в релешенах. Алчеми сам все сделает

Ruslan
29.11.2018
11:24:54
пока это всё сказки, не выходит магия ?

Andrew
29.11.2018
11:25:16

Ruslan
29.11.2018
11:25:51
[2018-11-29 14:25:39,942] [handlers] [DEBUG] Result: relationship 'symbols' expects a class or a mapper argument (received: <class 'sqlalchemy.sql.schema.Table'>)
symbols = relationship('finance_portfolioitem', secondary='finance_symbol')

Vadim
29.11.2018
11:26:58
Хвала господу и всем кто помог я решил этих кроликов ебнх

Ruslan
29.11.2018
11:27:06
поправился:
symbols = relationship(Symbol, secondary='finance_symbol')
[2018-11-29 14:26:48,213] [handlers] [DEBUG] Result: Could not determine join condition between parent/child tables on relationship PortfolioItem.symbols - there are no foreign keys linking these tables via secondary table 'finance_symbol'. Ensure that referencing columns are associated with a ForeignKey or ForeignKeyConstraint, or specify 'primaryjoin' and 'secondaryjoin' expressions.

Andrew
29.11.2018
11:27:38
Fk проверь

Ruslan
29.11.2018
11:27:49
что имеешь в виду?

Andrew
29.11.2018
11:30:12
что имеешь в виду?
Первый пример
https://docs.sqlalchemy.org/en/latest/orm/extensions/declarative/relationships.html#declarative-configuring-relationships

Pavel Tyavin
29.11.2018
11:35:38
Простите, немного нубо вопрос, но что-то я не въезжаю
Примитивно, но все же
Как напечатать вот так
1 1 1
1 1 2
1 1 3
1 2 1
1 2 2
1 2 3
1 3 1
1 3 2
1 3 3
2 1 1
2 1 2
2 1 3
2 2 1
и тд
В одном цикле, тремя циклами я знаю как
Мне конечно не цифры принтова, но суть такая
Думал можно for i,j,k in zip(range(1,3), range(1,5), range(1,11))
но не пошло :(
for i in (1,):
print('''1 1 1
1 1 2
1 1 3
1 2 1
1 2 2
1 2 3
1 3 1
1 3 2
1 3 3
2 1 1
2 1 2
2 1 3
2 2 1''')

David
29.11.2018
11:36:09

Google

Dmitriy
29.11.2018
11:36:55
Кавычки не те, вроде

Ruslan
29.11.2018
11:40:42
я же говорю, нихера не понятно

Andrew
29.11.2018
11:41:00

Ruslan
29.11.2018
11:41:14
я об этом сразу сказал, нужен пример

Alexander
29.11.2018
11:42:44
У тебя join сложный.

Ruslan
29.11.2018
11:46:58
для кого-то да, некоторые вообще join понять неспособны

Alexander
29.11.2018
11:47:14
для кого-то да, некоторые вообще join понять неспособны
def fun(data):
result = session.query(
Portfolio.id, PortfolioItem.percent, Symbol.alias
).select_from(PortfolioItem).join(
Portfolio, PortfolioItem.portfolio_id==Portfolio.id
).join(
Symbol, PortfolioItem.symbol_id==Symbol.id
).filter(Portfolio.account_id == account_id)