Psst, Тоже альтернативы, если ODBC все равно не нравится

Независимо от того, храните ли вы свои данные локально или в удаленной системе, независимо от ее типа или системы управления базами данных, ODBC - это решение.

Вступление

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

Поэтому, когда специалистам по данным или аналитикам нужно было быстро выполнить запросы в удобном для них Jupyter NB, ODBC пригодится.

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

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

пакет python для ODBC: pyodbc

MS-SQL

Установка драйвера MS-SQL - требуется, только если данные находятся на удаленном компьютере

Загрузите драйвер MS-SQL для вашей ОС

Windows

  1. для Windows это просто, как установка в один клик. ODBC для MS-SQL доступен здесь.

2. Установите файл .msi в соответствии с вашими требованиями.

Linux - Ubuntu

sudo su 
curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
#Download appropriate package for the OS version
#Choose only ONE of the following, corresponding to your OS version
#Ubuntu 14.04
curl https://packages.microsoft.com/config/ubuntu/14.04/prod.list > /etc/apt/sources.list.d/mssql-release.list
#Ubuntu 16.04
curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list > /etc/apt/sources.list.d/mssql-release.list
#Ubuntu 18.04
curl https://packages.microsoft.com/config/ubuntu/18.04/prod.list > /etc/apt/sources.list.d/mssql-release.list
#Ubuntu 18.10
curl https://packages.microsoft.com/config/ubuntu/18.10/prod.list > /etc/apt/sources.list.d/mssql-release.list
#Ubuntu 19.04
curl https://packages.microsoft.com/config/ubuntu/19.04/prod.list > /etc/apt/sources.list.d/mssql-release.list
exit
sudo apt-get update
sudo ACCEPT_EULA=Y apt-get install msodbcsql17
# optional: for bcp and sqlcmd
sudo ACCEPT_EULA=Y apt-get install mssql-tools
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
source ~/.bashrc
# optional: for unixODBC development headers
sudo apt-get install unixodbc-dev

Linux - Debian

sudo su 
curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
#Download appropriate package for the OS version
#Choose only ONE of the following, corresponding to your OS version
#Debian 8
curl https://packages.microsoft.com/config/debian/8/prod.list > /etc/apt/sources.list.d/mssql-release.list
#Debian 9
curl https://packages.microsoft.com/config/debian/9/prod.list > /etc/apt/sources.list.d/mssql-release.list
#Debian 10
curl https://packages.microsoft.com/config/debian/10/prod.list > /etc/apt/sources.list.d/mssql-release.list
exit
sudo apt-get update
sudo ACCEPT_EULA=Y apt-get install msodbcsql17
# optional: for bcp and sqlcmd
sudo ACCEPT_EULA=Y apt-get install mssql-tools
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
source ~/.bashrc
# optional: for unixODBC development headers
sudo apt-get install unixodbc-dev
# optional: kerberos library for debian-slim distributions
sudo apt-get install libgssapi-krb5-2

Linux - RedHat

sudo su
#Download appropriate package for the OS version
#Choose only ONE of the following, corresponding to your OS version
#RedHat Enterprise Server 6
curl https://packages.microsoft.com/config/rhel/6/prod.repo > /etc/yum.repos.d/mssql-release.repo
#RedHat Enterprise Server 7
curl https://packages.microsoft.com/config/rhel/7/prod.repo > /etc/yum.repos.d/mssql-release.repo
#RedHat Enterprise Server 8
curl https://packages.microsoft.com/config/rhel/8/prod.repo > /etc/yum.repos.d/mssql-release.repo
exit
sudo yum remove unixODBC-utf16 unixODBC-utf16-devel #to avoid conflicts
sudo ACCEPT_EULA=Y yum install msodbcsql17
# optional: for bcp and sqlcmd
sudo ACCEPT_EULA=Y yum install mssql-tools
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
source ~/.bashrc
# optional: for unixODBC development headers
sudo yum install unixODBC-devel

Mac OS

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew tap microsoft/mssql-release https://github.com/Microsoft/homebrew-mssql-release
brew update
brew install msodbcsql17 mssql-tools

Установите pyodbc - пакет ODBC для python

  1. установить пакет pyodbc.
pip install pyodbc

2. Чтобы проверить, правильно ли установлен драйвер, найдите все драйверы, подключенные к pyodbc.

import pyodbc
pyodbc.drivers()

для MS-SQL это приведет к

['ODBC Driver 17 for SQL Server']

Чем больше драйверов вы добавите в свою систему, тем больше драйверов будет добавляться в список.

Подключиться к базе данных

  1. Для удаленного подключения.
# enter ip address and port number of the system where the database resides.
server = 'tcp:31.288.186.65,49170'
database = 'database_name' # enter database name
username = 'user_name'
password = 'pass_word' 
# add appropriate driver name
cnxn = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};SERVER='+server+';DATABASE='+database+';UID='+username+';PWD='+ password)
cursor = cnxn.cursor()

2. Для локального подключения (если данные находятся на вашем локальном компьютере).

server = 'tcp:31.288.186.65,49170'
database = 'database_name' # enter database name
cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER='+server+';DATABASE='+database+';Trusted_Connection=yes;')
cursor = cnxn.cursor()

Запросить базу данных

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

ваш запрос может быть напрямую преобразован в pandas DataFrame.

import pandas as pd
# select command
query = ''' SELECT RecordID FROM tables''';
data = pd.read_sql(query, cnxn)
data.head()

Альтернативы

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

pip install "pymssql<3.0"

ORACLE

Oracle также поддерживает базы данных ODBC. Вам необходимо установить драйвер ODBC для oracle в соответствии с вашей ОС.

  1. Установите клиент Oracle ODBC.

Загрузите мгновенный клиентский базовый пакет и пакет odbc с сайта oracle.

2. Если загруженный пакет представляет собой zip-архив, используйте wget для извлечения или rpm для файла rpm.

3. установите ORACLE_HOME и LD_LIBRARY_PATH

export ORACLE_HOME=/usr/lib/oracle/12.2/client64
export LD_LIBRARY_PATH=/usr/lib/oracle/12.2/client64/lib

измените путь «/12.2/» в соответствии с вашей версией.

4. В /etc/odbcinst.ini установите:

[oracle_db]
Description=Oracle ODBC driver for Oracle 12c
Driver=/usr/lib/oracle/12.2/client64/lib/libsqora.so.12.1
FileUsage=1
Driver Logging=7
UsageCount=1

5. Теперь откройте Jupyter NB, и вы можете легко подключиться к своей базе данных Oracle.

import pyodbc
conn = pyodbc.connect('DRIVER={oracle_db};Host=1.1.1.1;Port=1521;Service Name=orcl.local;User ID=test1;Password=test1')

Альтернативы

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

MY-SQL

  1. Для MySQL это очень похоже на конфигурацию выше, где вам нужно установить соответствующие драйверы MySQL.
import pyodbc
conn = pyodbc.connect('DRIVER {MySQL};SERVER=localhost;DATABASE=test;UID=root;PWD=abc;')

Альтернативы

Для Mysql у вас есть много пакетов для подключения к python, например

МОНГО БД

  1. Для MongoDB установите драйвер MongoDB и подключитесь к pyodbc.

Альтернативы

В качестве альтернативы вы можете использовать pymongo для связи с python.

Заключение

Что касается возможности подключения, существует несколько пакетов для подключения к базам данных, но если вам нужен только один обобщенный пакет, вам нужен pyodbc, который использует интерфейс ODBC для доступа к данным независимо от систем баз данных.

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

Если вам понравилось, вы можете подписаться на меня в среде.



Кроме того, вы можете связаться со мной в моих социальных сетях, если вам нужно больше контента на основе Data Science, искусственного интеллекта или конвейера данных.