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