[Chicago] Yet another ORM for Python

Jason Rexilius jason at hostedlabs.com
Tue Jul 10 21:14:58 CEST 2007


Although my approach isn't great (and truth be told I usually am coding 
in PHP or perl) I use code generation scripts that read the schema and 
create the record classes, which I then manually tweak as needed.

I find that it minimizes the amount of code changes that I have to do to 
  deal with schema alterations while not injecting serious performance 
problems and still allowing custom handling as needed.




Carl Karsten wrote:
> Brantley Harris wrote:
>> That's the bit that's harsh: "we don't have a good method to apply
>> changes to the database when you change your code".  If this could be
>> solved, it would be another step towards decoupling the DBMS from the
>> general development experience, something I would love, personally.
> 
> I would love it too, but I have come to believe it is more trouble than it is 
> worth.   The only time I would use it is for upgrading a live system, and even 
> then I am skeptical exactly how much I would trust such a tool.    given that 
> there are 'lots' of "schema diff" tools that can generate a script of ALTER 
> commands, which then I can look over, I don't see much need for my development 
> environment to need it.
> 
> Here is how I deal with changes during development: DROP DATABASE.  see below 
> for how easy it can be.
> 
>> It seems to me that a good step forward for the Django ORM would be to
>> rebase itself on SQLAlchemy (which I thought was in development?)
> 
> It is, no clue how active, other than not dead yet.
> 
> Now from some blasphemy: I miss the level nuttiness that the VFP frameworks have 
> hit.  the one I used had about 150 'attributes' that could be assigned to most 
> things db related: the whole db, a table, a field in a view, a SP, etc.  Things 
> like Data type, size, "Caption" default, (django has that, just relating) short 
> caption, long caption, validation, FK Lookups that include what fields to 
> display, additional fields to pull on selection, SQL fragments to use when the 
> field is (not null, not empty) help text, help context ID.  There was enough 
> that they ended up being stored in db tables - both the settings and 
> descriptions/attribute names.  which meant the whole thing had a nifty UI. OTHO, 
> much of that doesn't apply to a browser, unless you want to start doing web2.0 
> stuff.   for now, I am ok with web 1.2
> 
> Carl K
> 
> 
> #!/usr/bin/env python
> # mkdbuser.py
> # prints the CREATE DATABASE and GRANT commands based on the local settings.py
> # ./mkdbuser.py | mysql -u root -p
> 
> 
> # nifty trick to get ../settings
> import os, sys
> os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'
> BASE_DIR = os.path.dirname(os.path.abspath(__file__))
> apppath=os.path.abspath(BASE_DIR+'/../')
> sys.path.insert(0, apppath )
> import settings
> 
> SQL = """
> DROP DATABASE IF EXISTS %(db)s;
> CREATE DATABASE %(db)s;
> GRANT ALL
>      ON %(db)s.*
>      TO %(user)s
>      IDENTIFIED BY '%(pw)s'
>      with grant option;
> 
> """
> 
> print SQL % {
>      'db':settings.DATABASE_NAME,
>      'user':settings.DATABASE_USER,
>      'pw':settings.DATABASE_PASSWORD }
> _______________________________________________
> Chicago mailing list
> Chicago at python.org
> http://mail.python.org/mailman/listinfo/chicago


More information about the Chicago mailing list