2014-09-16 4 views
0

Python 2.7. С PyFileMaker я могу подключиться к серверу FileMaker (FM), открыть БД, открыть таблицу (макет), но я не могу (легко) получить доступ к определенным записям и полям. Я хотел бы знать, как извлечь конкретные значения из таблицИзвлечь конкретные записи/поля с помощью PyFileMaker

  • Что я могу сделать

Вот это мой способ Переберите в БД для извлечения записей.

for i in range (25): 
    try: 
     a= fm.doFind(id_monument = i) 
     L.append(a) 
    except: 
     pass 

Учитывая, что (25) этого числа записей (но она должна иметь лучший путь к петле через БД). L - это список для публикации результатов. Результаты, в первую ячейку списка:

>>> L[0] 
<PyFileMaker.FMResultset.FMResultset instance WITH LIST OF 1 RECORDS (total-count  is  327)> 
[MODID = '0' 
RECORDID = '236' 
fk_Lieudec = '00002' 
fk_auteur_fiche = '00001' 
(...) 

Каждая ячейка L является запись FM DB. F[0] тип <type 'instance'> (Васа?)

  • То, что я хочу сделать

1) Извлеките все рекорды ID, а затем петлю на эти ID

2) Извлечь только определенные записи. Например, где 'fk_Lieudec' LIKE '*2*'

3) Извлечь только определенные поля. Например, для каждой записи выведите идентификатор и X, Y координаты.

Я действительно смотрю на regex, чтобы сделать это ... Это хороший способ? Как правило, где информация о PyFileMaker в Интернете?

+0

Возможно, вы знаете, какие версии FileMaker поддерживаются? – Bobby

ответ

0

То, как вы делаете, будет удалять FMServer столько раз, сколько счетчик циклов. Если вы устанавливаете новую версию PyFileMaker от нового GitHub репо, вы будете в состоянии выполнить findQuery и передать список идентификаторов в функцию так:

fm = FMServer('login:[email protected]','dbname','layoutname') 

results = fm.doFindQuery({'id': [1, 2, 3, 4],}) 
for entry in results: print entry 

можно даже комбинировать запросы так:

fm.doFindQuery({'id': [1, 2, 3, 4], 'color': ['red', 'blue'], '!gender': 'm'}) 

Посмотрите еще here.

Cheers

Смежные вопросы