PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

không thể tạo khóa chính tự động tăng thêm bằng flask-sqlalchemy

Không có gì sai với đoạn mã trên. Trên thực tế, bạn thậm chí không cần autoincrement=True hoặc db.Sequence('seq_reg_id', start=1, increment=1), vì SQLAlchemy sẽ tự động đặt Integer đầu tiên Cột PK không được đánh dấu là FK là autoincrement=True .

Ở đây, tôi đã tổng hợp một thiết lập hoạt động dựa trên thiết lập của bạn. ORM của SQLAlechemy sẽ đảm nhận việc tạo id và điền các đối tượng vào chúng nếu bạn sử dụng lớp dựa trên Cơ sở khai báo mà bạn đã xác định để tạo các phiên bản đối tượng của mình.

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. Nhận Id từ CHÈN có điều kiện

  2. Chuyển tên bảng làm tham số trong psycopg2

  3. Tên bảng động truy vấn SQL trong FOR

  4. Nhiều CTE trong một truy vấn

  5. Mảng tổng hợp postgresql