PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

не може да създаде автоматично инкрементиращ първичен ключ с flask-sqlalchemy

Нищо не е наред с горния код. Всъщност дори не се нуждаете от autoincrement=True или db.Sequence('seq_reg_id', start=1, increment=1), тъй като SQLAlchemy автоматично ще зададе първото Integer PK колона, която не е маркирана като FK като autoincrement=True .

Ето, събрах работеща настройка, базирана на вашата. ORM на SQLAlechemy ще се погрижи за генерирането на идентификатори и попълването на обекти с тях ако използвате клас, базиран на декларативна база които сте дефинирали за създаване на екземпляри на вашия обект.

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. sql ПОРЪЧАЙТЕ ПО множество стойности в определен ред?

  2. Как да намерите броя на редовете за всичките си таблици в Postgres

  3. Java Enums, JPA и Postgres enums - Как да ги накарам да работят заедно?

  4. Предайте множество стойности в един параметър

  5. Как да решим проблемите с привилегиите при възстановяване на PostgreSQL база данни