Для работы из Python с удаленным сервером MSSQL 2005 понадобится провести некоторую подготовку на обоих концах этого тандема.
На стороне сервера баз данных делаем так:
Пуск - Все программы - Microsoft SQL Server 2005 - Средства настройки - Настройка контактной зоны SQL Server. Далее внизу ссылка "Настройка контактной зоны для служб и соединений". В левой панели в первой вкладке видим такие параметры, как "Database Engine", а в нем "Служба" (ставим "Тип запуска" = "Авто" и "Состояние службы" = "Запущена") и "Удаленные соединения" (ставим "Локальные и удаленные соединения").
Ниже Database Engine есть параметр "SQL Server Browser" - "Служба" (ставим тип запуска - "Авто" и состояние службы - "Запущена").
При запуске "Среды SQL Server Management Studio Express", в окошке "Соединение с сервером" будет поле "Имя сервера". Оно выглядит как ИМЯ_КОМПЬЮТЕРА\ИМЯ_СЕРВЕРА_БД. Запомним эти данные, они пригодятся.
На стороне нашего компьютера с Ubuntu:
sudo apt-get install python-pymssql
Вот и всё. Теперь краткий пример работы с БД:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Импортируем библиотеку для работы с MSSQL
import pymssql
# Соединение с БД. Если вы не в том-же домене, что и сервер БД, то вместо
# ИМЯ_КОМПЬЮТЕРА впишите его IP.
con = pymssql.connect(host='ИМЯ_КОМПЬЮТЕРА\ИМЯ_СЕРВЕРА_БД', user='ПОЛЬЗОВАТЕЛЬ_БД', password='ПАРОЛЬ_ПОЛЬЗОВАТЕЛЯ_БД', database='ИМЯ_БД')
# Создаем курсор для работы с соединением
cur = con.cursor()
# Выполняем запрос
cur.execute("SELECT somefield FROM dbo.sometable;")
# Прокручиваем все записи из запроса
for i in cur.fetchall():
# Данные в БД в кодировке cp1251, поэтому сначала переводим их в юникод
i=unicode(i[0],'windows-1251')
# А затем напечатаем их в utf-8 кодировке
print "%s" % i.encode('utf-8')
# Подтверждаем транзакцию и закрываем соединение
con.commit()
con.close()
По сравнению с тем, как организовать такое соединение из php (через odbc, используя freetds) - просто праздник какой-то!
1 комментарий:
Спасибо ! работает :)
Отправить комментарий