On Dec 29, 1:06 pm, Aaron Brady <castiro...@gmail.com> wrote: > Hi all, > > About a year ago, I posted an idea I was having about thread > synchronization to the newsgroup. However, I did not explain it well, > and I really erred on the side of brevity. (After some finagling, Mr. > Bieber and I decided it wasn't exactly anything groundbreaking.) But > I think the brevity cost me some readers, who might have had more > interest. The affair was on the whole discouraging. So, I'm going to > try another idea, and assume that readers have some time, and will > spend it on it. > > I don't think relational data can be read and written very easily in > Python. There are some options, such as 'sqllite3', but they are not > easy. 'sqllite3' statements are valid SQL expressions, which afford > the entire power of SQL, but contrary to its name, it is not that > 'lite'. To me, 'lite' is something you could learn (even make!) in an > afternoon, not a semester; something the size of an ActiveState > recipe, or a little bigger, maybe a file or two. If you think SQL is > a breeze, you probably won't find my idea exciting. I assume that the > basics of SQL are creating tables, selecting records, and updating > records. > > My idea is to create a 'Relation' class. The details are basically > open, such as whether to back it with 'sqllite3', 'shelve', 'mmap', or > just mapping and sequence objects; what the simplest syntax is that > can capture and permit all the basics, and how much and what else can > fit in at that level; how and whether it can include arbitrary Python > objects, and what constraints there are on them if not; how and > whether to permit transactions; and what the simplest and coolest > thing you can do with a little Python syntax is. > > This is basically an invitation for everyone to brainstorm. (No > hijackings, good humor & digression ok.) Lastly, ... > > **warning, spoiler! here's what I thought of already.** > > **repeat! spoiler! here's what I thought of already.** > > #Just the select and update syntax: > > >>> a= people._select( "firstname== 'Joe'" ) > > #select 'key' from 'people' where 'firstname'== 'joe'>>> a > > [Entry2864, Entry3076, Entry3172]>>> entry1= a[ 0 ] > >>> entry1.phone > > #select 'phone' from 'people' where 'key'==self.key > "555-2413">>> entry1.phone= "555-1234" > > #update 'people' set 'phone'= '555-1234' where 'key'==self.key>>> entry1.phone > > "555-1234" > > #Create table syntax (a-whole-nother beast in itself): > > >>> classes= db.Relation( 'class_', 'person', Unique( 'class_', 'person' ) ) > > #create table 'classes' ( 'key', 'class_', 'person' ) unique > ( 'class_', 'person' ) > > >>> classes._unique( 'class_', 'person' ) > >>> classes.class_.noneok= False #'class_' cannot be null > >>> classes.person.noneok= False > >>> classes._insert( 'Physics', 'Dan' ) > >>> classes._insert( 'Chem', 'Tim' ) > > Hoping-"good critic"-is-self-consistent-ly, hoping-to-hear-it's-too- > complicated-already-ly, > A. Brady
You really do like to reinvent the wheels do you? :-) Nothing wrong with that. Just be aware that most people that really need what you are proposing are probably already using mature feature rich libraries for that. http://wiki.python.org/moin/HigherLevelDatabaseProgramming -- http://mail.python.org/mailman/listinfo/python-list