PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

impossibile creare una chiave primaria a incremento automatico con flask-sqlalchemy

Non c'è niente di sbagliato nel codice sopra. In effetti, non hai nemmeno bisogno di autoincrement=True o db.Sequence('seq_reg_id', start=1, increment=1), poiché SQLAlchemy imposterà automaticamente il primo Integer Colonna PK che non è contrassegnata come FK come autoincrement=True .

Qui, ho messo insieme una configurazione di lavoro basata sulla tua. L'ORM di SQLAlechemy si occuperà della generazione degli ID e del popolamento degli oggetti con essi se si utilizza la classe basata su Declarative Base che hai definito per creare istanze del tuo oggetto.

from flask import Flask
from flask.ext.sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.debug = True
app.config['SQLALCHEMY_DATABASE_URI'] = 'postgresql://user:[email protected]/testdb'
app.config['SQLALCHEMY_ECHO'] = True
db = SQLAlchemy(app)

class Region(db.Model):
    __tablename__ = 'regions'
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(100))

db.drop_all()
db.create_all()

region = Region(name='Over Yonder Thar')
app.logger.info(region.id) # currently None, before persistence

db.session.add(region)
db.session.commit()
app.logger.info(region.id) # gets assigned an id of 1 after being persisted

region2 = Region(name='Yet Another Up Yar')
db.session.add(region2)
db.session.commit()
app.logger.info(region2.id) # and 2

if __name__ == '__main__':
    app.run(port=9001)