Я чувствую, что это должно быть просто, но я не могу найти один пример этого.sqlalchemy 0.6 доступ устаревшей базы данных?
В качестве примера я имею следующие существующие таблицы:
CREATE TABLE `source` (
`source_id` tinyint(3) unsigned NOT NULL auto_increment,
`name` varchar(40) default NULL,
PRIMARY KEY (`source_id`),
UNIQUE KEY `source_name` (`name`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
CREATE TABLE `event` (
`source_id` tinyint(3) unsigned NOT NULL default '0',
`info` varchar(255) NOT NULL default '',
`item` varchar(100) NOT NULL default '',
PRIMARY KEY (`source_id`,`info`,`item`),
KEY `event_fkindex1` (`source_id`),
CONSTRAINT `event_fk1` FOREIGN KEY (`source_id`) REFERENCES `source` (`source_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Я хотел бы использовать SQLAlchemy 0.6, чтобы добавить много строк в таблице событий. Я видел несколько примеров sqlsoup, но очень ненавижу, как он обращается к db, постоянно вызывая объект db. Я последовал за документацию к вещам дб отражения и получил это далеко:
import sqlalchemy
from sqlalchemy import Table, Column, MetaData, create_engine
from sqlalchemy.orm import sessionmaker
engine = create_engine('mysql://user:[email protected]/db', echo=True)
metadata = MetaData()
source = Table('source', metadata, autoload=True, autoload_with=engine)
Session = sessionmaker(bind=engine)
session = Session()
session.query(source).first()
Это возвращает действительно некрасивый объект. Я действительно хочу функциональность mapper ORM sqlalchemy, чтобы я мог создавать объекты Event для вставки в БД.
Я смотрел на sqlsoup вещи:
from sqlalchemy.ext.sqlsoup import SqlSoup
db = SqlSoup(engine)
db.sources.all() #this kinda works out bet
Но я не мог понять, как добавить объекты образуют эту точку. Я даже не уверен, что это то, что я хочу, я хотел бы иметь возможность следить за учебником и материалом declarative_base. Возможно ли это, без необходимости переписывать класс для моделирования всей структуры таблицы? Если его нет, может кто-нибудь покажет мне, как бы я сделал это в этом примере?
Может ли кто-нибудь установить меня по правильному пути для получения работы картографа?