Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
categories = Set('Category', table='item_category', column='category_id')
Минусом [Pony] можно назвать синтаксис запросов в этой ORM — он весьма специфический, с применением генераторов, лямбд и прочих языковых плюшек Питона.
По-моему это наоборот большой плюс, которым я активно пользуюсь, так как позволяет писать по сути обычный питоновый код, который в большинстве случаев просто работает. Правда, pylint выпадает в осадок от таких лямбд
db = Connection(db='example') # mysql/psql/sqlite
db.tblname.insert({'name': 'Ubuntu', 'value': 14})
# INSERT INTO `tblname` (`name`, `value`) VALUES ('Ubuntu', 14)
for d in db.tblname.find({'name': 'Ubuntu'}):
# SELECT tblname.* FROM `tblname` WHERE `tblname`.`name`='Ubuntu'
print(d)
# a table is created for first column
db.tblname.add_column('id', 'INT(11)', primary=True, auto_increment=True, exist_ok=True)
# CREATE TABLE `tblname` (`id` INT(11) NOT NULL AUTO_INCREMENT, PRIMARY KEY ...
db.tblname.add_column('name', 'VARCHAR(32)', exist_ok=True)
# ALTER TABLE `tblname` ADD COLUMN `name` VARCHAR(32)
Мелкая питонячая радость #8: мелкие удовольствия для работы с БД