Upgraded to beta3.
So you're saying that if we want to be able to drop a constraint later
on we must create it with a name.
Alright. But I am still getting an Operational Error:
################################################
#!/usr/bin/env python
import sqlalchemy
from sqlalchemy import Table, Column, MetaData
from sqlalchemy.schema import *
from sqlalchemy.types import *
from sqlalchemy import create_engine
engine = create_engine('sqlite:///:memory:', echo=True)
metadata = MetaData()
category = Table('category', metadata,
Column('name', String (64), nullable=False ),
PrimaryKeyConstraint('name', name='name'),
)
metadata.create_all(engine)
from sqlalchemy.schema import DropConstraint
engine.execute(DropConstraint(category.constraints.pop()))
################################################
Yields:
$ python /tmp/testthis.py
2010-04-15 11:39:56,367 INFO sqlalchemy.engine.base.Engine.0x...9a2c
PRAGMA table_info("category")
2010-04-15 11:39:56,368 INFO sqlalchemy.engine.base.Engine.0x...9a2c
()
2010-04-15 11:39:56,369 INFO sqlalchemy.engine.base.Engine.0x...9a2c
CREATE TABLE category (
name VARCHAR(64) NOT NULL,
CONSTRAINT name PRIMARY KEY (name)
)
2010-04-15 11:39:56,369 INFO sqlalchemy.engine.base.Engine.0x...9a2c
()
2010-04-15 11:39:56,369 INFO sqlalchemy.engine.base.Engine.0x...9a2c
COMMIT
2010-04-15 11:39:56,370 INFO sqlalchemy.engine.base.Engine.0x...9a2c
ALTER TABLE category DROP CONSTRAINT name
2010-04-15 11:39:56,375 INFO sqlalchemy.engine.base.Engine.0x...9a2c
()
2010-04-15 11:39:56,375 INFO sqlalchemy.engine.base.Engine.0x...9a2c
ROLLBACK
Traceback (most recent call last):
File "/tmp/testthis.py", line 26, in <module>
engine.execute(DropConstraint(category.constraints.pop()))
File "/usr/lib/python2.5/site-packages/sqlalchemy/engine/base.py",
line 1533, in execute
return connection.execute(statement, *multiparams, **params)
File "/usr/lib/python2.5/site-packages/sqlalchemy/engine/base.py",
line 1086, in execute
return Connection.executors[c](self, object, multiparams, params)
File "/usr/lib/python2.5/site-packages/sqlalchemy/engine/base.py",
line 1136, in _execute_ddl
return self.__execute_context(context)
File "/usr/lib/python2.5/site-packages/sqlalchemy/engine/base.py",
line 1180, in __execute_context
context.parameters[0], context=context)
File "/usr/lib/python2.5/site-packages/sqlalchemy/engine/base.py",
line 1249, in _cursor_execute
self._handle_dbapi_exception(e, statement, parameters, cursor,
context)
File "/usr/lib/python2.5/site-packages/sqlalchemy/engine/base.py",
line 1247, in _cursor_execute
self.dialect.do_execute(cursor, statement, parameters,
context=context)
File "/usr/lib/python2.5/site-packages/sqlalchemy/engine/
default.py", line 266, in do_execute
cursor.execute(statement, parameters)
sqlalchemy.exc.OperationalError: (OperationalError) near "DROP":
syntax error u'ALTER TABLE category DROP CONSTRAINT name' ()
What am I doing wrong here?
-Gerry
On Apr 15, 12:28 am, Michael Bayer <[email protected]> wrote:
> don't know why you'd be using beta1 when we're up to beta3.....heres a fully
> working example:
>
> from sqlalchemy import *
> from sqlalchemy.schema import *
>
> metadata = MetaData()
>
> c1 = Table('category', metadata,
> Column('name', String (64), nullable=False ),
> PrimaryKeyConstraint('name', name='somename')
> )
>
> c2 = Table('category2', metadata,
> Column('name', String (64), nullable=False ),
> Column('name2', String (64), nullable=False ),
> PrimaryKeyConstraint('name', 'name2', name='somename')
> )
>
> print DropConstraint(c1.constraints.pop())
> print DropConstraint(c2.constraints.pop())
>
> On Apr 14, 2010, at 9:40 PM, Gerry Reno wrote:
>
>
>
> > Ok, I tried with the keyword but I get this using 0.6beta1:
>
> > PrimaryKeyConstraint(id='id'),
> > File "/usr/lib/python2.5/site-packages/sqlalchemy/schema.py", line
> > 1391, in __init__
> > super(ColumnCollectionConstraint, self).__init__(**kw)
> > TypeError: __init__() got an unexpected keyword argument 'id'
>
> > -Gerry
>
> > On Apr 14, 9:28 pm, Gerry Reno <[email protected]> wrote:
> >> What do I do then for a composite primary key?
>
> >> PrimaryKeyConstraint('col1','col2')
>
> >> -Gerry
>
> >> On Apr 14, 9:13 pm, Michael Bayer <[email protected]> wrote:
>
> >>> PrimaryKeyConstraint(name='name')
>
> >>> On Apr 14, 2010, at 8:22 PM, Gerry Reno wrote:
>
> >>>> category = Table('category', metadata,
> >>>> Column('name', String (64), nullable=False ),
> >>>> ...
> >>>> PrimaryKeyConstraint('name'),
> >>>> )
>
> > --
> > 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
> > athttp://groups.google.com/group/sqlalchemy?hl=en.
--
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.