I have hacked a little. And a short test works with Python 2.2 and MySQLdb v0.9.2...

I have used two backported scripts:

sets.py from Python 2.4
datetime.py from PyPy http://codespeak.net/svn/pypy/release/0.8.x/pypy/lib/datetime.py


I must insert the follow line in many files:
    from __future__ import generators


Then i have made a stupid fix for pickle.HIGHEST_PROTOCOL


Big Problem is a couple of dict.pop() :(
I can't patch the builtin dict, so i must replace the code in __init__.py and schema.py:

replace:
        >>>kwargs.pop(<<<
with:
        >>>dict_pop(kwargs, <<<

dict_pop is a small function and i have make it globally available with:

        __builtin__.dict_pop = dict_pop



The total number of the changes are not that much. I think it's manageable. I consider to continue.

Any feedback ?


--
Mfg.

Jens Diemer


----
CMS in pure Python CGI: http://www.pylucid.org
#!/usr/bin/python
# -*- coding: UTF-8 -*-

"""
Backports:

sets.py from Python 2.4
datetime.py from PyPy 
http://codespeak.net/svn/pypy/release/0.8.x/pypy/lib/datetime.py

Patches:
========

types.PickleType().__init__() - line 200:

stupid fix!

replace:
def __init__(self, protocol=pickle.HIGHEST_PROTOCOL, pickler=None):

with:
def __init__(self, protocol=1, pickler=None):



__init__.py - line 90 and schema.py

Many dict.pop() -> solution: __builtin__.dict_pop

replace:
    >>>kwargs.pop(<<<
with:
    >>>dict_pop(kwargs, <<<

so, the function dict_pop() is used ;)
"""


import sys, __builtin__

# make sets.py and datetime.py available:
sys.path.insert(0,"python_backports")



def dict_pop(dict, key, default_value):
    """
    In Python 2.2 dict.pop() does not exists.

    replace:
        value = dict.pop('key', default_value)
    with:
        value = dict_pop(dict, 'key', default_value)
    """
    if dict.has_key(key):
       result = dict[key]
       del dict[key]
    else:
       result = default_value

    return result

__builtin__.dict_pop = dict_pop






import sqlalchemy


engine = sqlalchemy.create_engine(
    "mysql://UserName:[EMAIL PROTECTED]/DatabaseName"
)
connection = engine.connect()

result = connection.execute("SHOW VARIABLES;")
print result
result = list(result)
print len(result), "lines"
print "First line:", result[0]
print

metadata = sqlalchemy.BoundMetaData(engine)
users_table = sqlalchemy.Table('users', metadata,
    sqlalchemy.Column('user_id', sqlalchemy.Integer, primary_key=True),
    sqlalchemy.Column('user_name', sqlalchemy.String(40)),
    sqlalchemy.Column('password', sqlalchemy.String(10))
)
metadata.engine.echo = True
try:
    users_table.create()
except Exception, e:
    print Exception.__name__, e
print

users_table = sqlalchemy.Table('users', metadata, autoload=True)
print list(users_table.columns)[0].name
print

i = users_table.insert()
print i

i.execute(user_name='Mary', password='secure')
print
i.execute({'user_name':'Tom'}, {'user_name':'Fred'}, {'user_name':'Harry'})
print

s = users_table.select()
print s
print

r = s.execute()
print r
print
print r.fetchone()
print
print r.fetchall()

connection.close()
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
Sqlalchemy-users mailing list
Sqlalchemy-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sqlalchemy-users

Reply via email to