Je me sens comme cela devrait être simple, mais je ne peux pas trouver un seul exemple de ce fait.sqlalchemy 0.6 accès à la base de données existante?
À titre d'exemple, j'ai les tableaux existants suivants:
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;
Je voudrais utiliser sqlalchemy 0,6 pour ajouter beaucoup de lignes à la table des événements. J'ai vu quelques exemples de sqlsoup, mais je déteste vraiment la manière dont il accède à la base de données en appelant constamment l'objet db. Je suivais les documents pour les trucs de réflexion db et a obtenu jusqu'ici:
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()
Ce retourne un objet vraiment laid. Je veux vraiment la fonctionnalité de mappeur de l'ORM sqlalchemy pour pouvoir construire des objets Event à insérer dans la BD.
Je regardais les trucs sqlsoup:
from sqlalchemy.ext.sqlsoup import SqlSoup
db = SqlSoup(engine)
db.sources.all() #this kinda works out bet
Mais je ne pouvais pas comprendre comment ajouter des objets forment ce point. Je ne suis même pas sûr que ce soit ce que je veux, j'aimerais pouvoir suivre le didacticiel et les trucs declarative_base. Est-ce possible sans avoir à réécrire une classe pour modéliser toute la structure de la table? Si ce n'est pas le cas, quelqu'un peut-il me montrer comment je ferais cela dans cet exemple?
Quelqu'un peut-il me mettre sur la bonne voie pour faire fonctionner le mapper?