Найти - Пользователи
Полная версия: SELECT с выбором столбцов в SQLAlchemy
Начало » Базы данных » SELECT с выбором столбцов в SQLAlchemy
1
cleg
Можно ли как-то осуществить SUBJ?

То есть выбрать не все столбцы из таблицы, а тока некоторые. В идеале еще задать им имя…

А то использую двойной JOIN, он притягивает кучу “ненужных” полей :-)

ЗЫ Может по ORM/DB нужна отдельная ветка?
slivlen
cleg
Можно ли как-то осуществить SUBJ?

То есть выбрать не все столбцы из таблицы, а тока некоторые. В идеале еще задать им имя…
Можно. Вместо указания таблицы из которой выбирать, можно указать столбцы: select()
cleg
пожалуй уточню

модель…

commands = Table('commands', metadata,
Column('cmd_id', Integer, primary_key=True),
Column('for_whom', String(30)),
Column('action', String(20), nullable=False)
)

computers = Table('cli_comps', metadata,
Column('comp_id', Integer, primary_key=True),
Column('ip_addr', String(15), nullable=False)
)

tasks = Table('tasks', metadata,
Column('task_id', Integer, primary_key=True),
Column('comp_id', Integer, ForeignKey('cli_comps.comp_id')),
Column('cmd_id', Integer, ForeignKey('commands.cmd_id')),
Column('completed', Boolean)
)
пытаюсь сделать такое:

joins = tasks.join(computers).join(commands)
res = joins.select(computers.c.ip_addr == 'x.x.x.x').execute()
как “отфильтровать” столбцы в данном случае?
cleg
сам и отвечу :-) сделал так:

joins = tasks.join(computers).join(commands)
result = select([commands.c.action, computers.c.ip_addr, tasks.c.completed], computers.c.ip_addr == 'x.x.x.x', from_obj=[joins]).execute()
я правильно сделал или можно “красивее”? :-)
cleg
следующий вопрос:

можно ли “переключить” базу “налету”?

то есть я подключаюсь к одной базе, делаю из нее выборку, потом надо подключится к другой базе с такой же структурой и в нее данные занести.

что для этого надо сделать? просто сделать по-новой BoundMetaData - недостаточно.
или это невозможно вообще?
slivlen
cleg
что для этого надо сделать? просто сделать по-новой BoundMetaData - недостаточно.
или это невозможно вообще?
Делаешь BoundMetaData для каждой базы и используешь их.
cleg
че=та я торможу…
а если у меня таблица уже создана с одной metadata, как ее переключить на другую???
slivlen
Можно заново создать таблицу, используя autoload или попробовать сделать это с использованием global_connect. В последнем слечае при создании таблицы явно указывать metadata не требуется. Также можно использовать метод таблицы tometadata.
http://www.sqlalchemy.org/docs/metadata.html
ods
Проще всего с DynamicMetaData: таблицы определяются один раз, в при выполнении операций указывается соединение (engine в терминах SQLAlchemy).
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB