Меню Рубрики

Установка pyodbc на centos

Установка MS SQL ODBC Driver под Linux и сборка плагина для Qt 5.9

Несколько дней назад встал вопрос о написании консольного приложения, которое будет работать в Linux CentOS 7 и взаимодействовать с MS SQL Server 2012. Мне очень нравится Qt и я решил, что воспользуюсь им для решения этой задачи. И если под Windows я достаточно быстро настроил необходимое окружение, то под Linux я столкнулся с проблемами, которые очень тяжело было решить с помощью гуглинга. Этому вопросу я посвятил полтора дня. Считаю полезным поделиться своим опытом, возможно кому-то это поможет сэкономить драгоценное время.

Инструменты

Я не хочу тянуть на сервер исходники Qt, для того чтобы собрать плагин и само приложение. Поэтому беру образ CentOS 7 LiveGNOME и устанавливаю его на VirtualBox машину. После делаю полный апдейт, и ставлю VirtualBox Guest Additions.

Скачиваю установщик Qt для Linux x64. Устанавливаю Qt 5.9.1, дополнительно при установке выбираю галочку Source, чтобы получить исходники.

Установка Microsoft ODBC Driver for SQL Server

Согласно инструкции устанавливаю драйвер:

Драйвер нужно установить как на VirtualBox, так и на машину, где будет работать софт.

Сборка Qt плагина QODBC

Следуя инструкции, скачиваем куда-нибудь unixODBC, распаковываем. Теперь нам нужно собрать unixODBC и установить. В документации Qt, а так же в других источниках в основном я встречал примеры, которые предполагают установку unixODBC в /usr/local/unixODBC. Тут дело вкуса конечно, но я буду использовать именно такое расположение. Так же файлы конфигов драйверов я хочу поместить в /usr/local/etc Для этого нужно сконфигурировать unixODBC со следующими параметрами:

Затем собираем и устанавливаем:

Теперь необходимо настроить конфигурацию Microsoft ODBC Driver for SQL Server. Для этого переходим в /usr/local/unixODBC/bin и выполняем:

Если вы устанавливали драйвер как было описано выше, то расположение файла odbcinst.ini будет именно таким. Иначе вам нужно определить свой путь. Все эти действия нужно выполнить и на Virtualbox машине и на рабочей.

Теперь нужно собрать Qt плагин для работы с ODBC драйвером. И с этого момента начинаются проблемы, которые частично связаны с багом, который еще не пофиксили. Для того, чтобы собрать плагин придется применить некоторые костыли. Если у кого-то возникнет более элегантный вариант костыля, пожалуйста напишите в комментариях.

Итак, для сборки в штатных условиях нам нужно выполнить простую процедуру. Переходим в QT_DIR/5.9.1/Src/qtbase/src/plugins/sqldrivers/odbc и выполняем:

Но из-за того, что имеем баг, скорее всего вы получите ошибку:

На отсутствие файла qtsqldrivers-config.pri, можно не обращать внимание, а вот вторая ошибка не даст нам собрать плагин. Чтобы ее избежать нужно закомменитровать в файле odbc.pro строчку:

После этого повторим вызов qmake:

И получим на выходе Makefile. Еще одна проблема с которой я столкнулся это флаги компилятора -Wdate_time и -std=c++1z, которые вызывали ошибку сборки.

На этот момент я уже потратил много времени, чтобы хоть как-то собрать плагин, поэтому эту проблему я решил жестко, просто открыл сгенерированный Makefile и изменил -std=c++1z на -std=c++11, а флаг -Wdate_time просто удалил. Эти пары флагов встречаются в двух местах. Можно установить более свежий gcc, или может кто-то подскажет есть ли возможность указать для qmake какие-то параметры, чтобы использовать c++11 вместо c++17?

Как бы вы ни поступили, теперь можно выполнить:

Тестовое приложение

Я создал консольное приложение в Qt и написал следующий код для тестирования соединения:

Собираем проект на Virtualbox машине. Запускаем, убеждаемся, что все работает. После этого собираем Release версию программы. Я не буду сейчас описывать процесс деплоя Qt приложений. Возможно это тема для еще одной публикации. Я опишу лишь ключевые моменты.

источник

Как связать Asterisk с Mysql через коннектор ODBC

Введение Установка драйвера ODBC Настройка конфигурации ODBC Установка Asterisk c модулями ODBC Конфигурирование Asterisk для работы с Mysql Заключение Введение В рабочей практике приходится сталкиваться с различными задачами, где необходимо во время вызова обращаться к базам данных из диалплана. Стандартная команда MYSQL не совсем удобна. Плюс ко всему необходимо хранить историю вызовов, а также событий […]

Читайте также:  Установка редан на лодку

В рабочей практике приходится сталкиваться с различными задачами, где необходимо во время вызова обращаться к базам данных из диалплана. Стандартная команда MYSQL не совсем удобна. Плюс ко всему необходимо хранить историю вызовов, а также событий звонков астериска. Для этого используются таблицы cdr и cel соответственно. Для всего этого используется драйвер ODBC.

ODBC – программный интерфейс для работы с БД. Разработан был компанией Microsoft и Simba Technologies. Этот интерфейс позволяет подключать сторонние программные продукты к БД.

В данной статье будет рассмотрена установка и конфигурирование драйверов ODBC на систему Centos 6.9. А также установка Asterisk c модулями odbc и настройка asterisk для работы с mysql.

В данном разделе будет рассмотрен порядок действий для установки драйвера ODBC, а также настройка параметров для корректной работы драйвера.

Для работы драйвера необходимо установить ряд пакетов из репозиториев:

  • libtool
  • libtool-ltdl
  • libtool-ltdl-devel
  • mysql-connector-odbc
  • libiodbc
  • libiodbc-devel

Если вы не знаете установлены эти пакеты у вас или нет. Можете воспользоваться следующей командой:

Она выводит список всех установленных пакетов. В названии которых встречаются слова odbc или libtool или mysql.

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

После установки драйвера необходимо указать в конфигурационном файле /etc/odbcinst.ini пути к файлам драйверов. Для этого необходимо найти установленные файлы:

  • libmyodbc5.so
  • libodbcmyS.so
  • libmyodbc8w.so — файл драйвера кодировки unicode
  • libmyodbc8a.so – файл драйвера кодировки ANSI

Для того, чтобы найти эти файлы воспользуемся консольной утилитой find.

Перепишем указанные директории в файл настроек ODBC. Для этого откроем его любым текстовым редактором, в данном случае это vim

Теперь надо указать пути к файлам. За это отвечают параметры Driver, Driver64, Setup, Setup64. Названия соответствуют разрядности системы i686 и x86_64. В итоге должно пучиться как на примере ниже:

После сохранения данных проверим, область видимости драйвера командой

В итоге должно отобразиться следующее:

Если после выполнения данной команды у вас в консоле отобразились данные строки, то вы всё верно настроили. Теперь надо редактировать файл, где будет указан идентификатор подключения к БД — /etc/odbc.ini. Важные поля:

  • [ ] — DSN имя для подключения к mysql (в дальнейшем будет использоваться в конфигурациях Asterisk)
  • driver – указывается название драйвера для связи с Mysql (прописывается имя указанной в файле /etc/odbcinst.ini)
  • server – адрес хоста mysql сервера
  • database – База данных для подключения
  • Port – порт подключения к mysql
  • Socket – файл сокета подключения к mysql
  • Charset –указывается кодировка записей

После редактирования должно получиться следующее:

Проверим подключение к Mysql через указанный [ ], который был прописал в файл odbc.ini. Проверить подключени можно следующей командой:

Должно вывести следующее как на скриншоте ниже

Не всегда администраторы, поддерживающие asterisk, собирают его с модулями необходимыми для работы с odbc. Поэтому в данном пункте будет показано, как пересобрать астериск с нужными модулями.

Для того, чтобы пересобрать asterisk, нужно перейти в директорию исходных файлов Asterisk. В данном случае — это /usr/src/asterisk-13.21.0/.

Поскольку астериск уже установлен, поэтому заново выполнять команду ./configure не нужно. Поэтому перейдем к следующему шагу make menuselect.

Теперь необходимо выбрать все модули, в которых в названии есть odbc.

Ниже приведена таблица с названием раздела и именем модуля.

Далее, как и при обычной установке астериска выполняем Save & Qiut, make, make install.

Для того, чтобы Asterisk писал в БД события и историю вызовов необходимо его сконфигурировать. Для этого надо указать настройки в нескольких файлах, которые находятся в директории /etc/asterisk. В данном разделе будет описано в какие файлы необходимо внести изменения, какие данные необходимо внести в них, а также возможность проверки правильности настроек.

Первым отредактируем файл res_odbc.conf. Если вы используете FreePBX, вам необходимо редактировать файл res_odbc_additional.conf.

  • новый [ ], который в дальнейшем будет использоваться в другом конфигурационном файле астериска
  • enabled – включение/отключение доступности текущего подключения к Mysql
  • dsn – DSN_name драйвера ODBC используемое для подключения к Mysql (указывается dsn имя, прописанное в файле /etc/odbc.ini)
  • preconnect возможность подключения при старте Астериска
  • username – пользователь mysql. (Если используется FreePBX, имя пользователя можно взять в файле /etc/freepbx.conf)
  • password – пароль пользователя mysql (Если используется FreePBX его можновзять в файле /etc/freepbx.conf)
  • database – имя базы данных, к которой астериск будет подключаться

В итоге должно получиться следующее:

Сохраняете изменения в этом файле, далее нужно вносить изменения в файл cdr_odbc.conf (если установлен FreePBX – cdr_adaptive_odbc.conf).

  • [ ] — имя подключения к БД
  • connection – Имя dsn. Которое указывалось в res_odbc.conf
  • loguniqueid – разрешить логирование uniquieid
  • table – таблица для заполнения истории звонков

В итоге должно получиться как на скриншоте ниже:

Далее сохраняются изменения и необходимо их применить. Для этого открывается консоль астериска командой asterisk rvvvv. Из этой консоли выполнить две команды:

  • module reload res_odbc.so — применяет изменения файла res_odbc.conf
  • module reload cdr_odbc.so — применяет изменения файла cdr_odbc.conf

Проверить правильность настроек можно командой odbc show из консоли астериска. Если выполнено все правильно то должно получиться как на скриншоте ниже.

После выполнения указанных выше действий вы сможете просматривать историю вызовов (CDR – call detail records). Также можно выполнять действия с данной таблицей из диалплана обращаясь к ней встроенной функцией астериска CDR()— что позволяет гибко оперировать логикой звонка.

Если включить фантазию и немного подумать, можно прикрутить еще и использование дополнительных таблиц через дополнительный файл func_odbc.conf. Но это уже другая статья

источник

Установка pyodbc на centos

Release notes have been moved from the Wiki now that GitHub supports releases. The old archived page will eventually be removed.

  • Home
  • Binding Parameters
  • Building pyodbc from source
  • Calling Stored Procedures
  • Connecting to databases
  • Connecting to Google BigQuery
  • Connecting to Hive from Ubuntu Debian
  • Connecting to Microsoft Access
  • Connecting to Microsoft Excel
  • Connecting to MySQL
  • Connecting to Netezza
  • Connecting to Oracle from RHEL or Centos
  • Connecting to PostgreSQL
  • Connecting to SQL Server from Linux
  • Connecting to SQL Server from Mac OSX
  • Connecting to SQL Server from RHEL 6 or Centos 7
  • Connecting to SQL Server from RHEL or Centos
  • Connecting to SQL Server from Windows
  • Connecting to SQLite
  • Connecting to Teradata
  • Connecting to Vertica
  • Connection
  • Cursor
  • Data Types
  • Database Transaction Management
  • Driver support for fast_executemany
  • Drivers and Driver Managers
  • Exceptions
  • Features beyond the DB API
  • Getting started
  • Install
  • Module
  • Objects
  • Release notes
  • Row
  • Running pydobc project unit tests
  • Tips and Tricks by Database Platform
  • Troubleshooting – Generating an ODBC trace log
  • Unicode
  • Using an Output Converter function
  • Show 25 more pages…
Clone this wiki locally

You can’t perform that action at this time.

You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.

Читайте также:  Установка кнопок эсп на ауди 80

источник

Не удалось установить pyodbc в Linux

Я запускаю Linux (2.6.18-164.15.1.el5.centos.plus) и пытаюсь установить pyodbc. Я делаю pip install pyodbc и получаю очень длинный список ошибок, которые заканчиваются на

Ошибка: команда ‘gcc’ не удалась с статусом выхода 1

Я просмотрел /root/.pip/pip.log и увидел следующее:

InstallationError: Command/usr/local/bin/python -c «import setuptools; файл= ‘/home/build/pyodbc/setup.py’; execfile (‘/home/build/pyodbc/setup.py ‘)» install -single-version-external-managed -record/tmp/pip-7MS9Vu-record/install-record.txt не удалось с кодом ошибки 1

У кого-то была аналогичная проблема с установкой pyodbc?

Я решил свою проблему, выполнив правильные указания на pyodbc — Создание вики, в котором говорится:

В Linux pyodbc обычно создается с использованием заголовков unixODBC, поэтому вам потребуется установить unixODBC и его заголовки. На коробке RedHat/CentOS/Fedora это означает, что вам необходимо установить unixODBC-devel:

В Ubuntu вам нужно установить unixodbc-dev:

Установите pip с помощью этой команды:

После установки вы сможете успешно установить pyodbc:

Следуйте инструкциям ниже, чтобы установить pyodbc в любой версии redhat

Добавляем еще один ответ на этот вопрос. Для выпуска Linux Debian Stretch вам необходимо установить следующие зависимости:

Выполните следующие команды (проверенные на centos 6.5):

Боролся с той же проблемой

После запуска: sudo apt-get install unixodbc-dev

Я был в состоянии pip установить pyodbc

Я неоднократно ссылался на этот вопрос и продолжал искать ответ, который я искал здесь: pyodbc wiki

Чтобы избежать ошибки gcc на Ubuntu Linux, я сделал:

Я также установил следующие 2 пакета из Synaptic:

У меня была такая же проблема с CentOS 5.5

В дополнение к установке unixODBC-devel мне также пришлось установить gcc-С++

Простой способ установить pyodbc — использовать conda. Так как conda автоматически устанавливает необходимые зависимости, включая unixodbc.

conda —ugrade all (необязательно)

тогда conda install pyodbc

он установит следующие пакеты:

libgfortran-ng: 7.2.0-hdf63c60_3 defaults mkl: 2018.0.3-1 defaults mkl_fft: 1.0.2-py36_0 conda-forge mkl_random: 1.0.1-py36_0 conda-forge numpy-base: 1.14.5-py36hdbf6ddf_0 defaults pyodbc: 4.0.17-py36_0 conda-forge unixodbc: 2.3.4-1 conda-forge

Согласно официальным документам Microsoft для Ubuntu 18.04, вы должны выполнить следующие команды:

Если вы используете python3.7, очень важно запустить:

sudo apt-get install python3.7-dev

Мне все это нужно, но мне также понадобилось установить python devel:

Источник загрузки vs apt-get

У утилиты apt-get в Ubuntu есть версия pyODBC. (версия 2.1.7).
Тем не менее, он плохо устарел (2.1.7 против 3.0.6) и может плохо работать с новыми версиями unixODBC и freetds.
Это особенно важно, если вы пытаетесь подключиться к более поздним версиям Microsoft Sql Server (2008 г.).
Рекомендуется использовать последние версии unixODBC, freetds и pyODBC при работе с последним сервером Microsoft Sql вместо того, чтобы полагаться на пакеты в apt-get.

Я знаю, что это старый вопрос, но у сопровождающего есть GitHub Repo pyodbc .

Следование инструкциям на GitHub docs кажется мне всегда лучшим вариантом. По состоянию на февраль 2018 года для CentOs7 (у них есть все вкусы по ссылке) они говорят:

Я столкнулся с той же проблемой. Для python3.6.8 и ubuntu 16.04 ничего из вышеперечисленного мне не помогло.

В моем случае (Amazon Linux AMI) ничего из вышеперечисленного не сработало. Сработало следующее (идея здесь):

  • Найдите путь к файлу cc1plus . Для меня это было в /usr/libexec/gcc/x86_64-amazon-linux/4.8.5/cc1plus . Для вас это может немного отличаться. Попробуйте ls -l /usr/libexec/gcc найти правильное имя каталога и продолжайте.
  • Найдите каталоги на своем пути: echo $PATH (для меня это был /sbin:/bin:/usr/sbin:/usr/bin:/opt/aws/bin )
  • Поместите ссылку на cc1plus в один из каталогов в вашей PATH: sudo ln -s /PATH/TO/cc1plus /DIRinPATH/
    Например, в моем случае:
    sudo ln -s /usr/libexec/gcc/x86_64-amazon-linux/4.8.5/cc1plus /usr/bin/

В зависимости от версии Centos может изменить пакет, вы можете искать так:

источник

Добавить комментарий

Adblock
detector