Here is a test:

from sqlalchemy import *
import datetime

sqlite_engine = create_engine('sqlite://filename=:memory:', echo=True)

a = Table('a', sqlite_engine,
    Column('id', Integer, primary_key = True),
    Column('name', String(4)),
    Column('age', Integer),
)
a.create()

class A(object):
    def __init__(self, name='', age=0):
        self.name = name
        self.age = age

    def __repr__(self):
        return "name=%s, age=%d" % (self.name, self.age)

assign_mapper(A, a, order_by=[a.c.name])

a = A('b', 3)
b = A('a', 4)
objectstore.commit()

for i in A.select():
    print i

It'll complain exception:


CREATE TABLE a(
        id INTEGER NOT NULL PRIMARY KEY,
        name VARCHAR(4),
        age INTEGER
)


{}
INSERT INTO a (name, age) VALUES (?, ?)
['b', 3]
INSERT INTO a (name, age) VALUES (?, ?)
['a', 4]
SELECT a.age AS a_age, a.id AS a_id, a.name AS a_name
FROM a ORDER BY [<sqlalchemy.schema.Column object at 0x00C69DF0>]
[]
Traceback (most recent call last):
  File "D:\test\sqlalchemy\t6.py", line 27, in ?
    for i in A.select():
  File 
"c:\python24\lib\site-packages\SQLAlchemy-0.91alpha-py2.4.egg\sqlalchemy\mapping\mapper.py",
line 399, in select
    return self.select_whereclause(arg, **kwargs)
  File 
"c:\python24\lib\site-packages\SQLAlchemy-0.91alpha-py2.4.egg\sqlalchemy\mapping\mapper.py",
line 406, in select_whereclause
    return self.select_statement(statement)
  File 
"c:\python24\lib\site-packages\SQLAlchemy-0.91alpha-py2.4.egg\sqlalchemy\mapping\mapper.py",
line 410, in select_statement
    return self.instances(statement.execute(**params))
  File 
"c:\python24\lib\site-packages\SQLAlchemy-0.91alpha-py2.4.egg\sqlalchemy\sql.py",
line 376, in execute
    return c.execute(*multiparams, **params)
  File 
"c:\python24\lib\site-packages\SQLAlchemy-0.91alpha-py2.4.egg\sqlalchemy\sql.py",
line 274, in execute
    return self.engine.execute_compiled(self, params)
  File 
"c:\python24\lib\site-packages\SQLAlchemy-0.91alpha-py2.4.egg\sqlalchemy\engine.py",
line 387, in execute_compiled
    proxy(str(compiled), parameters)
  File 
"c:\python24\lib\site-packages\SQLAlchemy-0.91alpha-py2.4.egg\sqlalchemy\engine.py",
line 382, in proxy
    self.execute(statement, parameters, connection=connection,
cursor=cursor)
  File 
"c:\python24\lib\site-packages\SQLAlchemy-0.91alpha-py2.4.egg\sqlalchemy\engine.py",
line 435, in execute
    self._execute(cursor, statement, parameters)
  File 
"c:\python24\lib\site-packages\SQLAlchemy-0.91alpha-py2.4.egg\sqlalchemy\engine.py",
line 444, in _execute
    c.execute(statement, parameters)
pysqlite2.dbapi2.OperationalError: no such column:
<sqlalchemy.schema.Column object at 0x00C69DF0>

But if I change the statement:

assign_mapper(A, a, order_by=[a.c.name])

to

assign_mapper(A, a, order_by=a.c.name)

Everything will be ok!

--
I like python!
My Blog: http://www.donews.net/limodou
NewEdit Maillist: http://groups.google.com/group/NewEdit


-------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc. Do you grep through log files
for problems?  Stop!  Download the new AJAX search engine that makes
searching your log files as easy as surfing the  web.  DOWNLOAD SPLUNK!
http://ads.osdn.com/?ad_idv37&alloc_id865&op=click
_______________________________________________
Sqlalchemy-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/sqlalchemy-users

Reply via email to