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

ude af stand til at oprette autoinkrementerende primærnøgle med flask-sqlalchemy

Intet er galt med ovenstående kode. Faktisk behøver du ikke engang autoincrement=True eller db.Sequence('seq_reg_id', start=1, increment=1), da SQLAlchemy automatisk indstiller det første Integer PK-kolonne, der ikke er markeret som en FK som autoincrement=True .

Her har jeg sammensat en fungerende opsætning baseret på din. SQLAlechemy's ORM vil sørge for at generere id'er og udfylde objekter med dem hvis du bruger den Declarative Base-baserede klasse som du har defineret til at oprette forekomster af dit objekt.

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)


  1. Sådan renser du rå SQL i Rails 4

  2. Indfyldning af displayvareværdi på forespørgsel i Oracle-formularer

  3. Opret forbindelse til SQL Server med Windows-godkendelse fra en Linux-maskine gennem JDBC

  4. Oracle Instant Client til ARM-baseret Debian-enhed