Создание базы данных MS Access с использованием Python - PullRequest
7 голосов
/ 05 мая 2011

Основная цель проекта, на который я планирую претендовать, заключается в создании базы данных Microsoft Access с использованием python.Основной серверной частью БД будет postgres, но планируется экспортировать образ Access.

Это будет веб-приложение, которое будет принимать данные от пользователя, проходить через черный ящик и выводить результаты в видеДоступ БД.Веб-приложение будет построено на сервере Linux.

У меня есть несколько связанных вопросов:

  • Есть ли надежная библиотека или модуль, который можно использовать?
  • Какой у вас опыт использования Access и python?
  • Какие-либо советы, хитрости или необходимость избегать, о которых мне нужно знать?

Спасибо:)

Ответы [ 8 ]

4 голосов
/ 10 мая 2011

Не могли бы вы вместо этого использовать базу данных sqlite?

редактирование:

Если это должно быть в Linux, и это должно быть в MS Access, то я почти уверен , это ваш единственный выбор , но это стоит 1550 долларов.

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

Конечно, вы всегда можете написать свой собственный драйвер базы данных, но, вероятно, стоит потратить время на раскладку в 1550 долларов. mdbtools работал над этим годами, и проект был в значительной степени заброшен.

нашел, вроде

Хорошо, поэтому я просто не мог отпустить это и обнаружил, что есть java-библиотека под названием Jackcess , которая будет записывать в файлы MS Access mdb на любой платформе, которая может запустить jvm. Конечно, это Java, а не Python, но, может быть, вы могли бы изучить достаточно Java, чтобы собрать приложение и выполнить его из Python? Или просто переключите все приложение на Java, как угодно.

2 голосов
/ 11 мая 2011

Если вы знаете это достаточно хорошо:

  • Python, его модули базы данных и конфигурация ODBC

, тогда вы должны знать, как это сделать:

  • открыть базу данных, прочитать некоторые данные, вставить их в другую базу данных

Если это так, то вы очень близки к нужному решению.Хитрость заключается в том, что вы можете открыть файл MDB как источник данных ODBC.Теперь: я не уверен, что вы можете "CREATE TABLES" с ODBC в файле MDB, поэтому позвольте мне предложить этот рецепт:

  1. Создать файл MDB с именем "TARGET.MDB" -с необходимыми таблицами, формами, отчетами и т. д. (Вставьте несколько фиктивных данных и убедитесь, что это именно то, что нужно клиенту.)
  2. Настройте источник данных ODBC для файла "TARGET.MDB".Убедитесь, что вы можете читать / писать.
  3. Удалите все фиктивные данные, но оставьте таблицу без изменений.Переименуйте файл «TEMPLATE.MDB».
  4. Когда вам нужно создать новый файл MDB: с Python скопируйте TEMPLATE.MDB в TARGET.MDB.
  5. Откройтеисточник данных для записи в TARGET.MDB.Создайте / скопируйте необходимые записи.
  6. Закройте источник данных, переименуйте TARGET.MDB в TODAYS_REPORT.MDB ... или что-либо еще, что имеет смысл для экспорта данных.

Будет ли это работать дляВы?

Почти наверняка было бы проще сделать все это в Windows, поскольку поддержка ODBC будет наиболее широко доступна.Тем не менее, я думаю, что в принципе вы могли бы сделать это в Linux при условии, что вы найдете подходящие компоненты ODBC для доступа к MDB через ODBC.

2 голосов
/ 08 мая 2011

Различные ответы на дублирующий вопрос говорят о том, что ваша «основная цель» создания базы данных MS Access на сервере linux недостижима.

Конечно, такая цель сама по себе не стоит вообще. Если вы сообщите нам, что пользователи / потребители базы данных Access должны делать , возможно, мы сможем вам помочь. Возможности: (1) создать скрипт и (набор) файлов, которые пользователь загружает и запускает для создания БД Access (2), если это просто для случайного изучения / манипулирования пользователем, файл Excel может подойти.

1 голос
/ 11 мая 2011

Вы можете экспортировать в XML, используя пространство имен officedata MS. Доступ не должен иметь никаких проблем с потреблением этого. Вы можете предоставить отдельную схему xsd или кодировать типы и отношения непосредственно в дереве документа. Вот простой пример:

<?xml version="1.0" encoding="UTF-8"?>
<dataroot xmlns="urn:schemas-microsoft-com:officedata">

<Table1><Foo>0.00</Foo><Bar>2011-05-11T00:00:00.000</Bar></Table1>
<Table1><Foo>3.00</Foo><Bar>2011-05-07T00:00:00.000</Bar></Table1>

<Table2><Baz>Hello</Baz><Quux>Kitty</Quux></Table2>
</dataroot>

Поиск в Google "urn: schemas-microsoft-com: officedata" должен вызвать некоторые полезные хиты.

0 голосов
/ 13 мая 2011

http://adodb.sourceforge.net/ - устанавливается на linux, написана на php или python, подключается к Access и PostgreSQL.

Мы использовали его годами, и он прекрасно работает.

0 голосов
/ 12 мая 2011

Что ж, мне кажется, вам нужна копия сервера vmware на компьютере с Linux, работающая под управлением Windows, веб-служба в виртуальной машине для записи и доступа к ней из основного компьютера с ОС Linux. Вы не найдете средства создания базы данных доступа в Linux. Называть это требованием не сделает его технически возможным.

0 голосов
/ 10 мая 2011

Не могли бы вы создать самораспаковывающийся файл для отправки пользователю Windows, на котором установлен Microsoft Access?

  1. Включить пустой файл .mdb.
  2. динамически создавать документы XML стаблицы, схемы и данные
  3. Включите исполняемый файл импорта, который возьмет все документы xml и импортирует в файл Access .mdb.

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

0 голосов
/ 08 мая 2011

Я бы предложил переместить данные в базу данных Microsoft SQL, а затем связать или импортировать данные для доступа.

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