python - mssql - clave primaria sqlalchemy sin auto-incremento
sqlalchemy python (1)
Estoy tratando de establecer una tabla con un diseño aproximadamente como el siguiente:
class Widget(db.Model):
__tablename__ = ''widgets''
ext_id = db.Column(db.Integer, primary_key=True)
w_code = db.Column(db.String(34), unique=True)
# other traits follow...
Todos los valores de campo se proporcionan a través de un sistema externo, y se descubren nuevos widgets y algunos de los valores de rasgos omitidos pueden cambiar con el tiempo (muy gradualmente), pero se garantiza que ext_id y w_code son únicos. Dada la naturaleza de los valores de ext_id, se comporta idealmente como clave principal.
Sin embargo, cuando creo un nuevo registro, especificando el valor de ext_id, el valor no se usa en el almacenamiento. En cambio, los valores en ext_id siguen un comportamiento de autoincremento.
>>> # from a clean database
>>> skill = Widget(ext_id=7723, w_code=u''IGF35ac9'')
>>> session.add(skill)
>>> session.commit()
>>> Skill.query.first().ext_id
1
>>>
¿Cómo puedo especificar a SQLAlchemy que el campo ext_id se debe usar como campo de clave principal sin autoincremento?
Nota: podría agregar una columna de ID sintética adicional como clave principal y hacer que ext_id sea una columna única en su lugar, pero esto complica mi código y agrega una inflamación adicional (mínima) a la base de datos y a todas las E / S. Espero evitar eso.
El problema se originó en un proyecto más grande, pero pude crear una reprografía más pequeña.
Prueba con sqlite
Establezca autoincrement=False
para deshabilitar la creación de una secuencia o serie para la clave principal.
ext_id = db.Column(db.Integer, primary_key=True, autoincrement=False)