SQLAlchemy выбор и вставка данных - PullRequest
0 голосов
/ 08 апреля 2020

Это третья попытка с большой надеждой, что, наконец, я объясню, что я хочу, чтобы «это имело смысл в 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: enter image description here

Table2, первый запуск: enter image description here

Table2, второй запуск: enter image description here

Цель: Каждый раз, когда код выполняется, мне нужен код Python SQLAlchemy для randomly make 1-й, 2-й, 3-й, n-й shuffled, чтобы это выглядело примерно так (для 4 пользователей): enter image description here

Пожалуйста, расскажите, какой код SQLAlchemy (в * 1062) *) мог бы достичь этого результата?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...