Форум сайта python.su
делаю запрос к БД через mysqldb. в результате запроса присутствуют данные вида:
datetime.datetime(2008, 1, 5, 18, 15, 30)
Офлайн
покажи запрос
PS в mysql не знаю, но pgsql есть функция to_char, используя которую можно переводить датавремя в строку заданого формата.
select to_char(now(), ‘DD.MM.YYYY HH:MI:SS’)
посмотри в mysql аналог
Офлайн
код в mysql
SELECT CAST( NOW( ) AS CHAR )
Офлайн
c_query = "select * from `user`"
c_Connect = MySQLdb.connect( host=c_host, db=c_database, user=c_user )
c_Cursor = c_Connect.cursor()
c_Cursor.execute( c_query )
c_Result = c_Cursor.fetchone()
(4L, datetime.datetime(2008, 1, 5, 18, 15, 30), ‘John’, None, 1)как изменить запрос - не понял.
Офлайн
А зачем? просто приведите результат к нужной строке уже на клиенте
c_Result[1].strftime("%d.%m.%Y %H:%M")
Офлайн
в моём случае python должен только передавать данные, а не работать с ними.
т.е. обработки данных надо свести к минимуму
тут http://megalib.com/books/129/glava05.htm пишут:
Если Вы имеете установленный пакет mx.DateTime , MySQLdb использует его для связанных с датой объектов. Иначе они будут возвращены как строки. Вы можете также изменять словарь преобразования типов, чтобы возвратить их как другие объектные классы.похоже, что у меня этот пакет установлен :)
Офлайн
попробуй код в mysql
SELECT cast( DATE_FORMAT( NOW( ) , ‘%d.%m.%Y’ ) AS char ) ;
Офлайн
pythonwin, не понятно.
если выполнить
c_Cursor.execute( "SELECT cast( DATE_FORMAT( NOW( ) , '%d.%m.%Y' ) AS char )" )
c_Connect.encoders[datetime.datetime]( datetime.datetime(2008, 1, 5, 18, 15, 30), None )
Офлайн
Это вам как пример привели. Поставте вместо NOW() в запросе имя нужного поля. А использование “*” в селектах вообще-то плохой тон ;)
Офлайн
понятно. тем временем нашёл правильное решение.
в MySQLdb.connect.encoders содержится набор правил для преобразования результатов запросов.
правила можно менять, по умолчанию они наследуются из MySQLdb.converters.conversions
т.е. если написать:
conv = MySQLdb.converters.conversions
c_Connect = MySQLdb.connect( host=c_host, db=c_database, user=c_user, conv=conv1 )
c_Connect = MySQLdb.connect( host=c_host, db=c_database, user=c_user, conv={} )
Офлайн