Psst, Тоже альтернативы, если ODBC все равно не нравится
Независимо от того, храните ли вы свои данные локально или в удаленной системе, независимо от ее типа или системы управления базами данных, ODBC - это решение.
Вступление
ODBC - это открытый интерфейс, который подключается практически к любой системе управления базами данных с помощью драйверов ODBC. Драйверы ODBC предоставляются системой управления базами данных, которая помогает подключиться к этой конкретной системе баз данных.
Поэтому, когда специалистам по данным или аналитикам нужно было быстро выполнить запросы в удобном для них Jupyter NB, ODBC пригодится.
Теперь для подключения ODBC в R вы можете следовать другим руководствам, так как я буду только демонстрировать реализацию python.
Обратите внимание, что помимо ODBC вы можете использовать другие пакеты для подключения, но большинство из этих пакетов могут подключаться только к определенным системам управления базами данных.
пакет python для ODBC: pyodbc
MS-SQL
Установка драйвера MS-SQL - требуется, только если данные находятся на удаленном компьютере
Загрузите драйвер MS-SQL для вашей ОС
Windows
- для 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
- установить пакет pyodbc.
pip install pyodbc
2. Чтобы проверить, правильно ли установлен драйвер, найдите все драйверы, подключенные к pyodbc.
import pyodbc pyodbc.drivers()
для MS-SQL это приведет к
['ODBC Driver 17 for SQL Server']
Чем больше драйверов вы добавите в свою систему, тем больше драйверов будет добавляться в список.
Подключиться к базе данных
- Для удаленного подключения.
# 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()
Запросить базу данных
- вы можете запрашивать базу данных, т. е. выбирать, вставлять, обновлять или удалять в своей записной книжке.
ваш запрос может быть напрямую преобразован в 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 в соответствии с вашей ОС.
- Установите клиент 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
- Для MySQL это очень похоже на конфигурацию выше, где вам нужно установить соответствующие драйверы MySQL.
import pyodbc
conn = pyodbc.connect('DRIVER {MySQL};SERVER=localhost;DATABASE=test;UID=root;PWD=abc;')
Альтернативы
Для Mysql у вас есть много пакетов для подключения к python, например
МОНГО БД
- Для MongoDB установите драйвер MongoDB и подключитесь к pyodbc.
Альтернативы
В качестве альтернативы вы можете использовать pymongo для связи с python.
Заключение
Что касается возможности подключения, существует несколько пакетов для подключения к базам данных, но если вам нужен только один обобщенный пакет, вам нужен pyodbc, который использует интерфейс ODBC для доступа к данным независимо от систем баз данных.
Кроме того, для любых разъяснений, комментариев, помощи, признательности или предложений просто разместите их в комментариях, и я помогу вам в этом.
Если вам понравилось, вы можете подписаться на меня в среде.
Кроме того, вы можете связаться со мной в моих социальных сетях, если вам нужно больше контента на основе Data Science, искусственного интеллекта или конвейера данных.