For me, starting off with SQLAlchemy, "metadata" immediately made
sense, because I'd heard and used the term before in the context of
databases. After using SQLAlchemy for a while it seems like metadata
is pretty well true to it's name. The word "catalog", on the other
hand, means nothing to me in a database context until you tell me. I
guess I wasn't a total database beginner, but I think real beginners
are likely to know what the term "metadata" means (i.e., "data about
data" is pretty simple and memorable).

I also recall using "metadata.engine" somewhere. That seems to make (a
little) more sense than "catalog.engine".

I have no preference for "engine" versus "datasource". I do agree that
datasource would be better for a beginner (not that that should be the
only criteria).

My 2 cents.

Steve



  The more I learned SQLAlchemy, the more I think my initial
impression of what it meant, in a SQLAlechemy context, was pretty
right.

On Jul 26, 7:45 pm, jason kirtland <[EMAIL PROTECTED]> wrote:
> With 0.4 almost upon us, we're coming down to the wire for big changes
> getting in- and some things are kind of "now or never".
>
> I've found myself explaining engines and metadata with some particular
> language lately, and I wondered, what would it look like to just put
> that terminology in the names themselves?  This is the last opportunity
> for terminology changes for a while, so I offer this up for discussion.
>
> So here's what I was thinking:
>
> datasource = create_datasource('posgresql:///test')
> connection = datasource.connect()
>
> catalog = Catalog()
> Table('foo', catalog, autoload=True)
> catalog.bind = datasource
>
> catalog.bind = 'sqlite:///'
>
> Engines would be DataSources, and MetaData would be Catalogs.
>
> I like the datasource name over engine because, from a user perspective,
> engines don't "go"- there's no moving parts.  Most of the time in
> application code I think about these engines as URIs anyhow:  Where is
> this pointing?  What database is that bound to?  Which DB is that coming
> from?  The fact that it has a dialect, pool, etc., is just a given and
> unimportant to me on the line.  I just think about what I'm connecting
> to or have connected.  This is my mental translation:
>
>    # see
>    engine.connect()
>    # think
>    'mysql:///geocoding'.connnect()
>
> ...and I think a name change would help smooth out questions like 'how
> do I organize my engine/engines in my code'.  It feels natural to me as
> well coming from other orms and pooling libraries.
>
> I've been describing the metadata as a catalog for a bit now- "a catalog
> of tables available in the database."  There's something about the name
> MetaData which, to me, is simultaneously vague and final.  Like it's
> very important, I don't really know what it does, and I should probably
> only have one.  In reality of course they're quite disposable and flexible.
>
> So there you have it.  I'm not married to this proposal by *any* means.
> The ideas gelled in my brain during the SQLAlchemy tutorial at OSCON,
> and this seems like the last opportunity to deeply question and
> reconsider what we have before a new generation of users takes on
> SQLAlchemy.
>
> -j


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To post to this group, send email to sqlalchemy@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/sqlalchemy?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to