> -----Original Message-----
> From: sqlalchemy@googlegroups.com 
> [mailto:sqlalch...@googlegroups.com] On Behalf Of rajasekhar911
> Sent: 21 August 2009 07:30
> To: sqlalchemy
> Subject: [sqlalchemy] Re: index in SA
> 
> 
> i want to add a composite index to the class inherited from
> declarative_base
> 
> I tried this,
> 
> class MyClass:
>    __tablename__ = 'my_table'
> 
>     id = Column(Integer, primary_key=True)
>     name = Column(String, nullable=False)
>     type = Column(String, nullable=False)
>     __table_args__ = (
>             Index('ix_name_type','name','type',unique=True)
>             )
> 
> gave me an error,
> File "/m2svn/trunk/src/model/MyClass.py", line 32, in MyClass
>     __table_args__ = (
>   File "/usr/lib/python2.4/site-packages/SQLAlchemy-0.5.5-py2.4.egg/
> sqlalchemy/schema.py", line 1461, in __init__
>     self._init_items(*columns)
>   File "/usr/lib/python2.4/site-packages/SQLAlchemy-0.5.5-py2.4.egg/
> sqlalchemy/schema.py", line 1465, in _init_items
>     self.append_column(_to_schema_column(column))
>   File "/usr/lib/python2.4/site-packages/SQLAlchemy-0.5.5-py2.4.egg/
> sqlalchemy/schema.py", line 2145, in _to_schema_column
>     raise exc.ArgumentError("schema.Column object expected")
> sqlalchemy.exc.ArgumentError: schema.Column object expected
> 

I'm not sure if this is the root cause of your error, but __table_args__
must either be a dictionary or a tuple where the last element is a
dictionary (according to
http://www.sqlalchemy.org/docs/05/reference/ext/declarative.html#table-c
onfiguration)

Also, I think Index may require actual column parameters rather than
strings (according to
http://www.sqlalchemy.org/docs/05/metadata.html#indexes). You may be
able to use something like the following after your class definition:

  Index('ix_name_type', MyClass.__table__.c.name,
MyClass.__table__.c.type, unique=True)

or even

  Index('ix_name_type', MyClass.name, MyClass.type, unique=True)

Hope that helps,

Simon

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To post to this group, send email to sqlalchemy@googlegroups.com
To unsubscribe from this group, send email to 
sqlalchemy+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/sqlalchemy?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to