i tried
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)
)
it errors out
__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 1476, in append_column
self._set_parent(column.table)
File "/usr/lib/python2.4/site-packages/SQLAlchemy-0.5.5-py2.4.egg/
sqlalchemy/schema.py", line 1469, in _set_parent
self.metadata = table.metadata
AttributeError: 'NoneType' object has no attribute 'metadata'
thanks
On Aug 21, 2:22 pm, rajasekhar911 <[email protected]> wrote:
> hi thanks for the reply..
> but one doubt
> how will i access the "MyClass" inside MyClass
>
> i tried
> ndex('ix_name_type',
> MyClass.__table__.c.name,MyClass.__table__.c.type, unique=True)
> it is giving the error
> NameError: name 'MyClass' is not defined
>
> thanks
>
> On Aug 21, 2:04 pm, "King Simon-NFHD78" <[email protected]>
> wrote:
>
> > > -----Original Message-----
> > > From: [email protected]
> > > [mailto:[email protected]] 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
> > tohttp://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
> > tohttp://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 [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/sqlalchemy?hl=en
-~----------~----~----~----~------~----~------~--~---