So far so good.  SqlAlchemy works as described and doesn't crap out cryptically when I try to do something unexpected, unlike some other ORM tools...
 
Here's some thoughts while I'm still thinking like a newbie.

SqlAlchemy's autoload was crapping out on "timestamp with timezone."  I added this to postgres.py (patch attached).

Nothing I ran across has __repr__ defined which makes REPL a pita, having to dir everything...

Some comments on the docs:
 
Most projects use the term "Roadmap" to denote planned features.  Perhaps "sqlalchemy concepts" or "Under the hood" would be less confusing.  It would be nice to have a Quickstart section come before this section, too; right now the first impression a newcomer to SqlAlchemy has is probably "Holy crap!  This is WAY more complicated than SqlObject!"  Basic Data Mapping is pretty close to this already, I think.

Establishing a Database Engine: I'd suggest leaving out **opts from the examples since without examples of possible values it isn't useful except to tell people "this is more complicated than you need to know about at first."  Which they can probably guess anyway. :)

--
Jonathan Ellis
http://spyced.blogspot.com
Index: lib/sqlalchemy/databases/postgres.py
===================================================================
--- lib/sqlalchemy/databases/postgres.py        (revision 748)
+++ lib/sqlalchemy/databases/postgres.py        (working copy)
@@ -94,12 +94,14 @@
     'float' : PGFloat,
     'real' : PGFloat,
     'double precision' : PGFloat,
+    'timestamp with time zone' : PG2DateTime,
     'timestamp without time zone' : PG2DateTime,
     'bytea' : PGBinary,
     'boolean' : PGBoolean,
 }
 pg1_ischema_names = pg2_ischema_names.copy()
-pg1_ischema_names['timestamp without time zone'] = PG1DateTime
+pg1_ischema_names['timestamp with time zone'] = \
+    pg1_ischema_names['timestamp without time zone'] = PG1DateTime
 
 
 def engine(opts, **params):
@@ -247,4 +249,4 @@
             c = self.proxy("select nextval('%s')" % seq.name)
             return c.fetchone()[0]
         else:
-            return None
\ No newline at end of file
+            return None

Reply via email to