Найти - Пользователи
Полная версия: pyodbc. Как можно сделать выборку из таблиц, находящихся в разных каталогах?
Начало » Базы данных » pyodbc. Как можно сделать выборку из таблиц, находящихся в разных каталогах?
1 2
Pluto
pyodbc. Как можно сделать выборку из таблиц, находящихся в разных каталогах, но на одном компьютере?
Работаю с dbf-файлами.
dbf_path1 = "C:\\FIRST_FOLDER"
dbf_path2 = "C:\\SECOND_FOLDER"
s1 = 'Driver={Microsoft dBase Driver (*.dbf)}; DefaultDir=' + dbf_path1
con1 = pyodbc.connect(s, autocommit = True)
s2 = 'Driver={Microsoft dBase Driver (*.dbf)}; DefaultDir=' + dbf_path2
con2 = pyodbc.connect(s, autocommit = True)
cur = con1.cursor()
cur.execute("И чего тут писать?")
#А надо бы что-то типа такого: SELECT a.field1, b.field2 FROM FIRST_FOLDER.table1 a, SECOND_FOLDER.table2 b
Pluto
Неужели никто не владеет такой сверхсекретной информацией?
Ну очень надо!
Не могу я справочную таблицу запихивать в один каталог с обрабатываемыми данными! Эти файлы потом из этого каталога пользователю нужно будет брать и уносить, так сказать. А если там помимо нужных файлов будет ещё и куча справочников, то в такой каше пользователю будет очень неудобно выбирать требуемое.
doza_and
Pluto
Ну очень надо!
Совсем я ведь не спец по pyodbc :( .
Так что буду не советовать а спрашивать.

Символьные ссылки не помогает сделать во второй директории? (в той где справочники живут).
Если надо просто получить новую таблицу в памяти из пары курсоров, то почему не использовать что-то из itertools? http://docs.python.org/3/library/itertools.html

Pluto
doza_and
Символьные ссылки не помогает сделать
Какие-такие символьные ссылки? Совершенно не понял о чём речь.
Pluto
Блин! Ну почему в древнем Foxpro 2.6 я спокойно могу связать таблицу из c:\babayka\table1 с z:\chuchundra\table2 посредством простого одного-единственного SQL-запроса и получить курсор в памяти или новую таблицу на диске, а в совремОнных языках эта плёвая фигня превращается в расфигнищищу непреодолимую???
БЕЗОБРАЗИЕ! Я буду жаловаться в спортлото!!!
4kpt_II
Не проблема. Я использую готовый ORM SQLAlchemy. Там все это можно. Но вот я не уверен, будет ли он работать с кайфовым продуктом от Microsoft
ajib6ept
4kpt_II
Не проблема. Я использую готовый ORM SQLAlchemy. Там все это можно. Но вот я не уверен, будет ли он работать с кайфовым продуктом от Microsoft

Диалект написан http://docs.sqlalchemy.org/en/rel_0_9/dialects/
PooH
Pluto
Блин! Ну почему в древнем Foxpro 2.6 я спокойно могу связать таблицу из c:\babayka\table1 с z:\chuchundra\table2 посредством простого одного-единственного SQL-запроса и получить курсор в памяти или новую таблицу на диске, а в совремОнных языках эта плёвая фигня превращается в расфигнищищу непреодолимую???
Потому, что Foxpro 2.6 был вершиной развития файл-серверных баз данных, а все что позже, это только так, некрофилов вроде вас побаловать. Кстати, в 64-х разрядной винде вас ждет неприятный сюрприз.
Pluto
Не могу я справочную таблицу запихивать в один каталог с обрабатываемыми данными! Эти файлы потом из этого каталога пользователю нужно будет брать и уносить, так сказать. А если там помимо нужных файлов будет ещё и куча справочников, то в такой каше пользователю будет очень неудобно выбирать требуемое.
Копируйте обрабатываемые файлы в каталог со справочниками, а после обработки обратно в каталог пользователя, заодно и undo получите.
Pluto
PooH
Кстати, в 64-х разрядной винде вас ждет неприятный сюрприз.
Не ждёт. Если питон используется 32-ух разрядный, то ODBC работает без проблем. Проверено на Win 7 Home Premium.

PooH
заодно и undo получите.
Не требуется. Файлы не должны ни коим образом изменяться! Это не БД для работы, это скорей передаточные файлы из которых нужно вытянуть статистику.

PooH
Копируйте обрабатываемые файлы в каталог со справочниками, а после обработки обратно в каталог пользователя, заодно и undo получите.
И этот извращенец называет меня некрофилом!
Но, видимо, придётся стать некрофилом-извращенцем. Некуда деваться.

П.С. Основных dbf-файлов может быть и пару-тройку десятков, а справочников пара-тройка штук, так что копировать лучше будет именно справочники.

Pluto
Короче, сделал два объекта-соединения к разным каталогам.
А потом, как нынче модно говорить, тупо перебор значений по двум курсорам. “Бегу” по значениям из одного курсора и ищу их в курсоре, который хранит данные из нужного справочника. Средствами самого питона (for, if in).
Великая скорость не нужна, так что и так сойдёт!

Но в спортлото я всё равно буду жаловаться!!!
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