Форум сайта python.su
Офлайн
LexanderПодобную строку я использовал раньше -
https://gist.github.com/rduplain/1293636
LexanderЯ правил файлы:
Проверьте тот ли файл правили и что в ODBC_BOTH_DSN.
cat /etc/odbc.ini
[2008r2]
Driver = FreeTDS
Description = ODBC connection via FreeTDS
Servername = FreeTDS_2008r2
Database = SocPortal
UID = sa
PWD = 111
cat /etc/odbcinst.ini
[FreeTDS]
Description = TDS driver (Sybase/MS SQL)
Driver = /usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so
Setup = /usr/lib/x86_64-linux-gnu/odbc/libtdsS.so
FileUsage = 1
UsageCount = 5
$ odbcinst -j
unixODBC 2.2.14
DRIVERS............: /etc/odbcinst.ini
SYSTEM DATA SOURCES: /etc/odbc.ini
FILE DATA SOURCES..: /etc/ODBCDataSources
USER DATA SOURCES..: /home/alexey/.odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8
$ odbcinst -s -q
[2008r2]
$isql 2008r2
[ISQL]ERROR: Could not SQLConnect
Отредактировано Pr_Alexey (Авг. 5, 2013 10:44:21)
Офлайн
Pr_AlexeyЭто 2 разные проблемы.
Подобную строку я использовал раньше - вместо русских букв знаки вопроса.
Офлайн
LexanderОгромное спасибо, вариант с указанием настроек напрямую получилься, так же у меня была ошибка в преобразовании кодировки в цикле for. Вот моя программа в текущем виде:
2. Возможно, не хватает ClientCharset в настройках DSN или строке соединения.
Тоже см. ссылку выше.
#!/usr/bin/env python # -*- coding: utf-8 -*- import pyodbc con = pyodbc.connect('DRIVER=FreeTDS; SERVER=192.168.0.2;PORT=49224; DATABASE=SocPortal; UID=sa; PWD=111; TDS_Version=8.0; ClientCharset=UTF8;') #con = pyodbc.connect('2008r2') cur = con.cursor() cur.execute("SELECT CHANGE_DATE,COMMENT FROM PROTOCOL WHERE DATEDIFF(dd,[CHANGE_DATE], GETDATE()) < 5") # Прокручиваем все записи из запроса for i in cur.fetchall(): i=unicode(i[1],'utf-8') # А затем напечатаем их в utf-8 кодировке print "%s" % i.encode('utf-8') # Подтверждаем транзакцию и закрываем соединение con.commit() con.close()
Офлайн
бывает всякое
Офлайн