簡體   English   中英

SQLAlchemy:如何在不將其作為主鍵的情況下創建整數列auto_increment(和unique)?

[英]SQLAlchemy: How to make an integer column auto_increment (and unique) without making it a primary key?

我正在使用Flask擴展來為SQLAlchemy定義我的數據庫模型。 我希望id列是int類型並具有auto_increment屬性但不使其成為主鍵。 我該如何實現?

我試過這個:

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

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:ajay@localhost/pydb'
app.config['SQLALCHEMY_ECHO'] = True
db = SQLAlchemy(app)

class Scenario(db.Model):
    scid = db.Column(db.Integer, nullable=False, unique=True, autoincrement=True)
    scenario_name = db.Column(db.String(100), primary_key=True)
    scenario_description = db.Column(db.String(200), nullable=False)
    image_id = db.Column(db.Integer, db.ForeignKey('images.id', onupdate='CASCADE', ondelete='CASCADE'))

    def __init__(self, scenario_name, scenario_description, image_id=None):
        self.scenario_name = scenario_name
        self.scenario_description = scenario_description
        self.image_id = image_id

    def __repr__(self):
        return '<Scenario %r, %r, %r>' % (self.scenario_name, self.scenario_description, self.image_id)

但是這不會將scid列設置為auto_increment。

您可以添加AUTO_INCREMENT而不是主鍵,但不能有兩個AUTO_INCREMENT字段

如果你沒有AUTO_INCREMENT你可以添加一個AUTO_INCREMENTUNIQUE如下所示:

ALTER TABLE `items` ADD `AutoInc` INT NOT NULL AUTO_INCREMENT, ADD UNIQUE (`AutoInc`)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM