Форум сайта python.su
всем привет.
пишу первую прогу. Нужно получить доступ к серверу баз данных MS SQL. Написал такой код
# -*- coding: cp1251 -*-
import os, sys, locale, adodbapi, codecs
db=adodbapi.connect(“Driver={SQL Server};Server=127.0.0.1;Database=cakephp;Uid=kkk;Pwd=1;”)
c=db.cursor()
c.execute('use cakephp')
c.execute('select last_name from users ')
t= c.fetchone()
x = str(t)
print t
unicodestring = unicode(x, “cp1251”)
print x
db.close()
проблема в том что
print x
print t
выводят номера символов в юникод, а как вывести читаемые символы.???
В базе данных есть символы кириллицы, именно с такими символами возникают проблемы.
Python 2.5.1 ОС Windows XP.
P.S. убил 3 дня. что делать дальше не знаю.
Офлайн
посмотри Использование Unicode в Python
Офлайн
спасибо
Офлайн
+ у тебя проблема в том что c.fetchone() возвращает кортеж, а тебе нужна строка => нужно
t= c.fetchone()
PS для работы с MS SQL есть для питона пакет pymssql
Отредактировано (Июль 2, 2007 17:20:36)
Офлайн
Я нашел такое решение
c.execute('select last_name from users ')
t= c.fetchone()
print “%s”%(t)
какое правильнее решение?
ваше или мое?
почему?
Офлайн
аналогичная операция
>>> t=('name1') # заменяет t = c.fetchone()
>>> “%s”%(t)
'name1'
>>>
qman, если у тебя нужно работать с небольшими данными (по МБ и по количеству записей), то можешь посмотретьв сторону sqlobject и sqlalchemy
Офлайн
pythonwinтут что то я не понимаю последний пример,
Отредактировано (Июль 3, 2007 08:29:23)
Офлайн
qmanНу ты чего? Он же через интерпритатор запускает (в интерактивном режиме), а там print можно опускать. Об этом режиме свидетельствуют три угловых скобки “>>>” перед каждой командой. Так что не обращай на это внимание и всегда пиши интсрукцию print.
А разве print не нужен? Мне кажется правильнее
print “%s”%(t)
Отредактировано (Июль 3, 2007 08:37:24)
Офлайн