Index() is not a Table argument. As in DDL where "CREATE INDEX" is
its own declaration outside of "CREATE TABLE", Index() is setup
independently:
class MyClass(Base):
... columns
Index("my_index", MyClass.__table__.c.foo)
or
Index("my_index", MyClass.foo)
On Aug 21, 2009, at 5:25 AM, rajasekhar911 wrote:
>
> 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
-~----------~----~----~----~------~----~------~--~---