[Sqlalchemy-tickets] Issue #2991: constraint name unexpected when using metadata.naming_conventions
Brought to you by:
zzzeek
|
From: Marek B. <iss...@bi...> - 2014-03-12 15:07:20
|
New issue 2991: constraint name unexpected when using metadata.naming_conventions https://bitbucket.org/zzzeek/sqlalchemy/issue/2991/constraint-name-unexpected-when-using Marek Baczyński: DB: SQL Server 2008R2 SQLAlchemy==0.9.3 ``` #!python from sqlalchemy import Column, Integer, String, MetaData, ForeignKey from sqlalchemy import Enum, Text, Sequence, BigInteger, DateTime, Boolean from sqlalchemy import UniqueConstraint, CheckConstraint from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import relationship convention = { "ix": 'ix_%(column_0_label)s', "uq": "uq_%(table_name)s_%(column_0_name)s", "ck": "ck_%(table_name)s_%(constraint_name)s", "fk": "fk_%(table_name)s_%(column_0_name)s_%(referred_table_name)s", "pk": "pk_%(table_name)s" } metadata = MetaData(naming_convention=convention) Base = declarative_base(metadata=metadata) class Table(Base): __tablename__ = 'table' id = Column(Integer, primary_key=True) col1 = Column(Enum('one', 'two', name='col1'), nullable=True) col2 = Column(Boolean(name='col2'), nullable=True) ``` metadata.create_all() results in this sql: ``` #!sql INFO [sqlalchemy.engine.base.Engine] CREATE TABLE [table] ( id INTEGER NOT NULL IDENTITY(1,1), col1 VARCHAR(3) NULL, col2 BIT NULL, CONSTRAINT pk_table PRIMARY KEY (id), -- expected ck_table_col1 CONSTRAINT ck_table_ck_table_col1 CHECK (col1 IN ('one', 'two')), -- expected ck_table_col2 CONSTRAINT ck_table_ck_table_col2 CHECK (col2 IN (0, 1)) ) INFO [sqlalchemy.engine.base.Engine] {} INFO [sqlalchemy.engine.base.Engine] COMMIT ``` |