qman
Июль 2, 2007 13:11:32
всем привет.
пишу первую прогу. Нужно получить доступ к серверу баз данных 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 дня. что делать дальше не знаю.
pythonwin
Июль 2, 2007 17:20:04
+ у тебя проблема в том что c.fetchone() возвращает кортеж, а тебе нужна строка => нужно
t= c.fetchone()
PS для работы с MS SQL есть для питона пакет
pymssql
qman
Июль 3, 2007 05:14:17
Я нашел такое решение
c.execute('select last_name from users ')
t= c.fetchone()
print “%s”%(t)
какое правильнее решение?
ваше или мое?
почему?
pythonwin
Июль 3, 2007 06:41:06
аналогичная операция
>>> t=('name1') # заменяет t = c.fetchone()
>>> “%s”%(t)
'name1'
>>>
qman, если у тебя нужно работать с небольшими данными (по МБ и по количеству записей), то можешь посмотретьв сторону sqlobject и sqlalchemy
qman
Июль 3, 2007 07:59:24
pythonwin
тут что то я не понимаю последний пример,
итак есть код
t = ('name1')
“%s”%(t)
Если я правильно понял этот код должен вывести
'name1'
???
А разве print не нужен? Мне кажется правильнее
print “%s”%(t)
guest01
Июль 3, 2007 08:35:09
qman
А разве print не нужен? Мне кажется правильнее
print “%s”%(t)
Ну ты чего? Он же через интерпритатор запускает (в интерактивном режиме), а там print можно опускать. Об этом режиме свидетельствуют три угловых скобки “>>>” перед каждой командой. Так что не обращай на это внимание и всегда пиши интсрукцию print.