?

Log in

No account? Create an account
python по русски [entries|friends|calendar]
Ру_питон

[ userinfo | livejournal userinfo ]
[ calendar | livejournal calendar ]

SQLObject 3.4 [05 Aug 2017|09:54pm]

phd

Выпущена библиотека SQLObject 3.4.0. Изменения:

  • Прекращена поддержка Python 2.6; минимальна версия теперь Python 2.7 (и 3.4+);
  • Исправлена работа с драйверами py-postgresql и PyGreSQL.

Полный список новостей (на английском) можно посмотреть здесь: http://sqlobject.org/News.html.

SQLObject - это библиотека объектно-реляционного отображения. Каждая таблица представлена классом, каждая строка таблицы - экземпляром этого класса, каждая колонка (атрибут) - питоновским атрибутом. Библиотека SQLObject проста в использовании; не претендует на универсальность и всеохватность, но основные операции с SQL поддерживает. SQLObject работает со следующими БД: MySQL, PostgreSQL, SQLite, Firebird, Sybase, MSSQL и MaxDB (SAPDB). Работает с Python 2.7 и 3.4+.

Пример — простой класс, представлюящий талицу SQL:

  >>> from sqlobject import *
  >>>
  >>> sqlhub.processConnection = connectionForURI('sqlite:/:memory:')
  >>>
  >>> class Person(SQLObject):
  ...     fname = StringCol()
  ...     mi = StringCol(length=1, default=None)
  ...     lname = StringCol()
  ...
  >>> Person.createTable()
Создание и использование объекта:
  >>> p = Person(fname="John", lname="Doe")
  >>> p
  
  >>> p.fname
  'John'
  >>> p.mi = 'Q'
  >>> p2 = Person.get(1)
  >>> p2
  
  >>> p is p2
  True
Запросы:
  >>> p3 = Person.selectBy(lname="Doe")[0]
  >>> p3
  
  >>> pc = Person.select(Person.q.lname=="Doe").count()
  >>> pc
  1

post comment

Cheetah 3.0 [07 May 2017|08:59pm]

phd

Выпущена библиотека CheetahTemplate 3.0.0.

Полный список новостей (на английском) можно посмотреть здесь: http://cheetahtemplate.org/news.html.

CheetahTemplate - это шаблонизатор для Питона. Работает с Python 2.7 и 3.3+. Я уже объяснял, почему предпочитаю Гепарда, а не что-то другое.

post comment

SQLObject 3.3 [07 May 2017|08:56pm]

phd

Выпущен SQLObject 3.3.0. Изменения:

  • Добавлена работа с драйверами PyODBC и PyPyODBC для MySQL, Postgres и MS SQL.

Полный список новостей (на английском) можно посмотреть здесь: http://sqlobject.org/News.html.

SQLObject - это библиотека объектно-реляционного отображения. Каждая таблица представлена классом, каждая строка таблицы - экземпляром этого класса, каждая колонка (атрибут) - питоновским атрибутом. Библиотека SQLObject проста в использовании; не претендует на универсальность и всеохватность, но основные операции с SQL поддерживает. SQLObject работает со следующими БД: MySQL, PostgreSQL, SQLite, Firebird, Sybase, MSSQL и MaxDB (SAPDB). Работает с Python 2.6, 2.7 и 3.4+.

PyPyODBC — это драйвер ODBC на чистом Питоне. К драйверам и менеджеру ODBC он обращается с помощью cffi. Прямого отношения к PyPy не имеет, но, возможно, авторы планировали использовать PyPyODBC для доступа к БД из PyPy.

post comment

Оживляю мёртвого Гепарда [02 Apr 2017|10:57pm]

phd
Рад сообщить, что я восстанавливаю разработку Cheetah Template. К сожалению, для этого пришлось вырвать проект из рук предыдущего мэйнтейнера (R. Tyler Croy), сделать форк и переименовать проект. Теперь он зовётся Cheetah3 (CheetahTemplate3). Зато я уговорил первоначального автора (Tavis Rudd) прописать в адрес домена и www адреса моих Github Pages: http://cheetahtemplate.org/

Код обновлён для работы с Python 2.7 и 3.3+.
Github: https://github.com/CheetahTemplate3

Тесты бегают на Travis и AppVeyor с Python 2.7, 3.3, 3.4, 3.5 и 3.6; x86 и x64.

Представляю первую альфу: https://pypi.python.org/pypi/Cheetah3/3.0.0a1
5 comments|post comment

SQLObject 3.2.0 [11 Mar 2017|08:27pm]

phd

Выпущен SQLObject 3.2.0. Релиз посвящен работе с драйверами и тестами. Изменения:

  • Поддержка драйверов для Firebird: pyfirebirdsql (в доп. к fdb и kinterbasdb );
  • Поддержка драйверов для MySQL: oursql и pymysql (раньше были mysqldb и mysql-connector);
  • Поддержка драйверов для Postgres: py-postgresql (раньше был один psycopg); была попытка добавить pg8000, но он требует патчей; мои pull-request'ы висят в трекере pg8000;
  • Исправления в MSSQLConnection и SybaseConnection;
  • Документация генерируется Sphinx'ом и публикуется на ReadTheDocs;
  • Отключён Circle CI (частые таймауты);
  • Запущено тестирование Firebird на Travis;
  • Запущено тестирование на AppVeyor; MS SQL, MySQL, Postgres и SQLite; Python 2.7, 3.4 и 3.5, x86 и x64; есть проблемы с MS SQL и MySQL.

Полный список новостей (на английском) можно посмотреть здесь: http://sqlobject.org/News.html.

SQLObject - это библиотека объектно-реляционного отображения. Каждая таблица представлена классом, каждая строка таблицы - экземпляром этого класса, каждая колонка (атрибут) - питоновским атрибутом. Библиотека SQLObject проста в использовании; не претендует на универсальность и всеохватность, но основные операции с SQL поддерживает. SQLObject работает со следующими БД: MySQL, PostgreSQL, SQLite, Firebird, Sybase, MSSQL и MaxDB (SAPDB). Работает с Python 2.6, 2.7 и 3.4+.

В ближайших планах — работа с PyODBC.

post comment

SQLObject 3.1 [16 Aug 2016|10:25pm]

phd

Выпущен SQLObject 3.1.0. Изменения:

  • Новый тип колонки: UuidCol, хранит uuid1 (a8098c1a-f86e-11da-bd1a-00112444be1e)
  • Новый тип колонки: JsonbCol. Только для PostgreSQL. Требует psycopg2 >= 2.5.4 и PostgreSQL >= 9.2.
  • Новый тип колонки JSONCol: универсальная колонка JSON.
  • Исправлены все import * с помощью star-destroyer.
  • Тесты, кроме Travis CI, бегают на Circle CI.
  • Полный список новостей (на английском) можно посмотреть здесь: http://sqlobject.org/News.html.

SQLObject - это библиотека объектно-реляционного отображения. Каждая таблица представлена классом, каждая строка таблицы - экземпляром этого класса, каждая колонка (атрибут) - питоновским атрибутом. Библиотека SQLObject проста в использовании; не претендует на универсальность и всеохватность, но основные операции с SQL поддерживает. SQLObject работает со следующими БД: MySQL, PostgreSQL, SQLite, Firebird, Sybase, MSSQL и MaxDB (SAPDB). Работает с Python 2.6, 2.7 и 3.4+.

post comment

SQLObject 3.0 [01 Jun 2016|07:18pm]

phd

Выпущен SQLObject 3.0.0. Изменения:

  • Python 3 (3.4+)
  • Python 2 и Python 3 из одной кодовой базы (не требуется 2to3)
  • Полный список новостей (на английском) можно посмотреть здесь: http://sqlobject.org/News.html.

SQLObject - это библиотека объектно-реляционного отображения. Каждая таблица представлена классом, каждая строка таблицы - экземпляром этого класса, каждая колонка (атрибут) - питоновским атрибутом. Библиотека SQLObject проста в использовании; не претендует на универсальность и всеохватность, но основные операции с SQL поддерживает. SQLObject работает со следующими БД: MySQL, PostgreSQL, SQLite, Firebird, Sybase, MSSQL и MaxDB (SAPDB). Работает с Python 2.6, 2.7 и 3.4+.

post comment

Pyp 8 [01 Apr 2016|02:20am]

phd
Следующая версия Питона будет нумероваться Python 8!

https://mail.python.org/pipermail/python-dev/2016-March/143603.html

Почему 8? Ну, как же: Perl 6, PHP 7, а Python — 8! PEP8, опять же.
7 comments|post comment

версии библиотеки.... [27 Nov 2015|03:16pm]

anonymous_andy
Крик от бессилия!!
Коллеги, ну просто чистым матом хочется покричать, ну хороший язык питон, но с библиотеками кодировками ну просто какой то капец!!!

Мне нужно сделать простой парсер который будет переходить по интернет страничкам брать нужные и записывать из в базу данных, объясните почему нельзя сделать хоть какую то совместимость между версиями/библиотеками?!?! почему я неделю бьюсь сначала с версией 2.7 из под которой всё работает, но не возможно нормально работать с кодировками, в результате плюнув на 2.7, третий день бьюсь чтобы на 3.х хоть на какой то версии заработали библиотеки BeautifulSoup/lxml ?!?!?!?!
ну как так то!?
20 comments|post comment

Ищем Web разработчика [30 Oct 2015|02:53am]

zuboder

Молодая и амбициозная компания "Лето", ищет еще одного программиста в уютный офис на ВДНХ (г. Москва).

Если вы любите просиживать кресло и ничего не делать - закройте вкладку или пролистывайте дальше... Это сообщение не для вас. Да, у нас очень много тяжелой работы, но на сколько она тяжелая - на столько же она и интересная. Помимо приятной, конкурентной ЗП вы сможете получить отличный опыт в работе с современными технологиями и поучаствовать в разработке крупного, вкусного проекта.

Мы занимаемся разработкой универсальной системы контроля транспорта и собственного агрегатора такси. На frontend'е все построено на AnagularJS, а на backend'е - Yii2.

Нам нужен человек с уверенными знаниями этих framework'ов, а так же с пониманием технологий SSE, Socket. Со знанием на собственном опыте о Highload проектах и с безмерным желанием учиться и развиваться. Иногородним поможем с переездом.

У нас молодой и веселый коллектив, теплый офис с PS4, SEGA, Dandy, настолками и печеньками, а так же отличным видом на ВДНХ. Плюс разные корпоративные бонусы. =)

Свои резюме можете отправлять на почту: ibrainraider@gmail.com
Подробное описание вакансии здесь: http://hh.ru/vacancy/14729202




8 comments|post comment

чудеса и пасхальные яйца [16 May 2015|03:32am]

uzverss
мне попалась странная арифметика:

>>> 0.1+0.1+0.1-0.3
5.551115123125783e-17

>>> 0.7-0.5-0.2
-5.551115123125783e-17

>>> (0.1+0.1+0.1-0.3)-(0.7-0.5-0.2)
1.1102230246251565e-16

>>> (0.7-0.5-0.2)-(0.1+0.1+0.1-0.3)
-1.1102230246251565e-16

зато тут магия куда то делась
>>> (0.1+0.1+0.1-0.3)+(0.7-0.5-0.2)
0.0

а кто ещё какие фокусы знает?
33 comments|post comment

Где-то так, пять - шесть, но никак не восемь.. [15 May 2015|02:55pm]

dil
По мотивам поста в ru_php, где внезапно обнаружилось, что floor(log(1000,10)) вовсе не 3, а 2. Оказывается, в питоне то же самое:

$ python
Python 2.7.6 (default, Mar 22 2014, 22:59:56)
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from math import log, log10, floor
>>> log10(1000)
3.0
>>> log(1000,10)
2.9999999999999996
>>> floor(log(1000,10))
2.0
25 comments|post comment

pypy бандл [02 Apr 2015|12:52pm]

zupernintendo
можно таскать как стандалон. но полный дистрибутив жирноват.
какие минимальные зависимости нужны, где то есть описание?
1 comment|post comment

Piter Py - вторая Python-конференция на Неве [04 Mar 2015|07:56pm]

denrit

Второй год подряд портал Айти-Событие.рф проводит Python-конференцию - «Piter Py», которая состоится 20 марта в Санкт-Петербурге. Конференция призвана объединить людей, небезразличных к языку программирования Python для общения и обмена опытом.

Хедлайнеры конференции:

Hynek Schlawack

CPython & Twisted core dev. PSF member. FOSS mercenary. Head of infrastructure and board representative at Variomedia.

Armin Ronacher

Flask and Jinja2 creator. Pocoo Team founder. PSF member. Developer atSplash Damage.

Так же на конференции выступят:

Иван Цыганов и  Александр Кошкин (Positive Technologies), Алексей Тремаскин и Петр Шамардин (Wargaming St.Petersburg), Иван Ремизов (Parallels), Максим Климишин (GVMachines Inc), Алексей Пирогов и Николай Телепенин (БАРС Груп), Кирилл Борисов (Яндекс), Алексей Зиновьев (Google Developer Group Russia), Григорий Петров (Digital October), Александр Козловский и Алексей Малашкевич (ponyorm.com), Александр Щепановский (Автор funcy, cacheops), Андрей Светлов (LevelUp) и Михаил Кривушин (AppCraft).


Формат:


  • Однодневная конференция в 2 параллельных потока докладов.

Типы докладов:


  • Блиц-доклад: 20 мин. (15 мин. на доклад + 5 мин. на обсуждение)

  • Двойной блиц-доклад: 40 мин. (30 мин. на доклад + 10 мин. на обсуждение)

  • Секционный доклад: 1 час (45-50 мин. на доклад + 10-15 мин. на обсуждение)

Сайт конференции:

http://piterpy.ru
post comment

Celery [решено] [19 Feb 2015|07:07pm]

innormal
Господа, добрый вечер,

Хочу попросить опытных заводчиков сельдерея подсказать где собака могла порыться, симптомы таковы:

Делаю пример из туториала на сайте (тот, который про add(x,y); return x+y), брокер - rabbitmq, там же храню результаты.
Проблема заключается в том, что таск всегда висит в состоянии 'PENDING', хотя в логах celery говорит, что

[2015-02-19 18:50:02,613: INFO/MainProcess] Received task: tasks.add[ef01472a-612d-47b0-b14a-b9223343b38f]
[2015-02-19 18:50:02,643: INFO/MainProcess] Task tasks.add[ef01472a-612d-47b0-b14a-b9223343b38f] succeeded in 0.028690864972304553s: 5

Команды 'celery inspect active', 'celery inspect scheduled' честно говорят, что очередь пуста.

Прочее:
virtualenv, Python3.4, celery 3.1.17, RabbitMQ 3.4.3, FreeBSD 10.0.

Вопрос в том, почему задача висит в этом состоянии?

UPD:
Конфиг celery:

CELERY_TIMEZONE = 'Europe/Moscow'

CELERY_IMPORTS = ("tasks", )
CELERY_RESULT_BACKEND = "amqp"
BROKER_URL = "amqp://guest:guest@localhost:5672//"
CELERY_TASK_RESULT_EXPIRES = 300
CELERY_IGNORE_RESULT = False

UPD2:
По старой доброй традиции проблема крылась не в инструменте, а в голове. Как только я привел к одному знаменателю все пароли, явки и имена пользователей, сразу все заработало как ожидалось. Впрочем, в конечном итоге я выбрал redis вместо rabbitmq по простой причине - rc.d скрипт для него заработал из коробки.
3 comments|post comment

SQLObject 2.0 [20 Dec 2014|09:36pm]

phd

Выпущен SQLObject 2.0.0. Наиболее интересные изменения:

  • Работа с микросекундами, если поддерживает БД; MariaDB поддерживает микросекунды с версии 5.3.0, MySQL с версии 5.6.4, Postgres без проблем, у SQLite проблема обратной совместимости.
  • Разработка переведена с Subversion на git, Github, Travis CI, все дела.

Появились планы на Python 3+.

3 comments|post comment

Грабли SSLные, или Как подменить класс в модуле [19 Dec 2014|03:09pm]

dil
Вкратце: старая машинка со старым питоном (2.4.3). Скрипт не может прицепиться к HTTPS-серверу, потому что питоновый _ssl по умолчанию использует прибитый гвоздиками SSLv23, поменять в этой версии питона нельзя, а сервер эти протоколы не поддерживает, ему нужен TLSv1. Подробности, если кому интересно, тут: http://ru-root.livejournal.com/2777369.html

Нагуглил, что можно написать собственную реализацию класса HTTPSConnection и на ходу подменить в модуле соответствующий класс:
import httplib
class HTTPSConnection(httplib.HTTPConnection):
...
httplib.HTTPSConnection = HTTPSConnection


Написал с использованием модуля OpenSSL. Соединение теперь устанавливается. Но скрипт вылетает с сообщением
  File "/usr/lib64/python2.4/httplib.py", line 275, in __init__
    self.fp = sock.makefile('rb', 0)
NotImplementedError: Cannot make file object of SSL.Connection

Это в HTTPResponse __init__() ломается при вызове self.fp = sock.makefile('rb', 0).

Написал аналогично свой HTTPSResponse, унаследованный от httplib.HTTPResponse, со своим __init__'ом, который делает makefile по-другому, а __init__ от родительского класса вообще не вызывает. Точно так же воткнул свой класс на ходу в модуль: httplib.HTTPResponse = HTTPSResponse.

Авотфиг, скрипт продолжает вылетать с той же ошибкой в 275 строке /usr/lib64/python2.4/httplib.py

Вопрос: что я делаю не так? Почему класс не подменился? Или он подменился, но тогда почему __init__ от родительского класса продолжает вызываться?
15 comments|post comment

WSDL в SUDS [16 Sep 2014|10:08am]

dil
По советам лучших собаководов попробовал использовать suds (0.4.1) вместо SOAPpy. Немедленно наткнулся на грабли с неопознанным типом string:
Collapse )

Насколько я понимаю, ошибка вызвана использованием soapenc:string вместо обычного xsd:string в описаниях message'й. Этот soapenc ссылается на xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/". Если в локальном файле в definitions заменить у soapenc урл на xsd'шный - xmlns:soapenc="http://www.w3.org/2001/XMLSchema", то ошибка исчезает. Но хочется таки использовать не локальный файл, а wsdl с сервера, а там я ничего поменять не могу.

Гугление показало, что ошибка типичная, должна лечиться ручным присобачиванием location к namespace посредством suds.xsd.sxbasic.Import.bind(). Причём для этого конкретного namespace оно уже даже прибито гвоздиками в suds/xsd/sxbasic.py:
#######################################################
# Static Import Bindings :-(
#######################################################
Import.bind(
    'http://schemas.xmlsoap.org/soap/encoding/',
    'suds://schemas.xmlsoap.org/soap/encoding/')

но не работает ни автоматом, ни вручную.

Альтернативный нагуглённый способ - приделать suds.xsd.doctor.ImportDoctor к клиенту. Но попытка использовать в этом докторе imp = Import('http://schemas.xmlsoap.org/soap/encoding/', location='http://www.w3.org/2001/XMLSchema') приводит к таймауту, потому что прямой доступ из локалки закрыт, а переменную среды http_proxy оно игнорирует.
А если эту XMLSchema скачать вручную и подсунуть в location в виде локального файла, на выходе получаем дамп из 1200 строк, заканчивающийся сообщением RuntimeError: maximum recursion depth exceeded.

Как эту хрень победить?!

Если кто захочет поэкспериментировать, wsdl можно взять тут.

Collapse )
post comment

WSDL в SOAPpy [12 Sep 2014|03:48pm]

dil
Пытаюсь соорудить простенький SOAP-клиент через SOAPpy. При указании wsdl в виде урла получаю ошибку парсинга:
Collapse )

А если тот же самый урл скачать wget'ом в файл и подсунуть его в SOAPpy.WSDL.Proxy(), то всё нормально парсится и работает. Но хочется использовать wsdl непосредственно с веб-сайта, на случай, если там что поменяется со временем.

Что я делаю не так?
21 comments|post comment

Нестрогий поиск подстроки [04 Jul 2014|03:16pm]

dil
Задача: определить наличие в строке некоего слова посредством нестрогого сравнения. То есть, foobar может там быть написан как foo bar, f0obar, fobar, foobar5 или ещё как-нибудь похоже.

В общих чертах эту задачу решает fuzzywuzzy посредством fuzz.partial_ratio, но к сожалению, оно работает только на коротких строках, примерно до 200 символов. На 300 уже не видит даже полностью совпадающего слова foobar.

Есть идеи, как решить эту задачу?
19 comments|post comment

navigation
[ viewing | most recent entries ]
[ go | earlier ]