Tidak ada yang salah dengan kode di atas. Bahkan, Anda bahkan tidak perlu autoincrement=True
atau db.Sequence('seq_reg_id', start=1, increment=1),
karena SQLAlchemy akan secara otomatis mengatur Integer
pertama Kolom PK yang tidak ditandai sebagai FK sebagai autoincrement=True
.
Di sini, saya telah menyusun pengaturan kerja berdasarkan Anda. ORM SQLAlechemy akan menangani pembuatan id dan mengisi objek dengannya jika Anda menggunakan kelas berbasis Declarative Base yang telah Anda tetapkan untuk membuat instance objek Anda.
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)