Это третья попытка с большой надеждой, что, наконец, я объясню, что я хочу, чтобы «это имело смысл в SQL», поэтому не закрывал вопрос снова и снова, не объясняя, в чем проблема.
Описание:
У меня есть две таблицы:
table2 = db.Table('t2', metadata,
db.Column('id', db.Integer, autoincrement=True, primary_key=True, nullable=False),
db.Column('data_id', db.Integer, nullable=False), // integer, unique to each insert by the user
db.Column('username', db.String(32), nullable=False), // string for business logic, unique in the combination with column stack
db.Column('stack', db.Integer, nullable=True), // integer value for business logic, unique in the combination with column username
db.Column('numerator', db.String(500), nullable=True)) // unique number, generated on very Python app execution
table1 = db.Table('t1', metadata,
db.Column('id', db.Integer, autoincrement=True, primary_key=True, nullable=False),
db.Column('data_id', db.Integer, nullable=False),
db.Column('username', db.String(32), nullable=False),
db.Column('stack', db.Integer, nullable=True),
db.Column('numerator', db.String(500), nullable=True),
db.Column('active', db.Boolean, default=False)) // boolean value for business logic
Текущее поведение:
Журнал приложения c (python код) выполняется каждую минуту.
N количество пользователей (по маршруту Flask) вставляет данные (в виде одной строки) в Table1
. В этом случае было бы 4 пользователя. 1-й пользователь вставляет 1-ю строку в Table1
; 2-й пользователь вставляет 2-ю строку, 3-й пользователь вставляет 3-ю строку, n-й пользователь вставляет n-ю строку и т. Д.
Я выбираю и вставляю данные из Table1
в Table2
со следующим кодом:
ResultProxy = connection.execute(query_t0) // can be any number; value comes from another query which is not the relevant here
query_t1 = db.select([table1.columns.data_id,table1.columns.username,table1.columns.stack,table1.columns.numerator]).where(db.and_(table1.columns.numerator == numerator, table1.columns.active.is_(False), table1.columns.bet_id == bet_id)).order_by(func.random()).limit(ResultProxy.rowcount/2)
...
db.insert(table2).from_select(['data_id','username', 'stack', 'numerator'], query_t1)
Проблема в том, что строки, вставленные в Table2
, находятся в той же группировке / порядке / последовательности /, как вы их называете, как в Table1
. Например:
Table1
:
Table2
, первый запуск:
Table2
, второй запуск:
Цель: Каждый раз, когда код выполняется, мне нужен код Python SQLAlchemy для randomly
make 1-й, 2-й, 3-й, n-й shuffled
, чтобы это выглядело примерно так (для 4 пользователей):
Пожалуйста, расскажите, какой код SQLAlchemy (в * 1062) *) мог бы достичь этого результата?