我正在使用sqlAlchemy的flask扩展来定义我的数据库模型。我希望ID列为int类型,并具有自动递增属性,但不将其设为主键。我如何实现它?
我试过这个:
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
和UNIQUE
之类的内容:
ALTER TABLE `items` ADD `AutoInc` INT NOT NULL AUTO_INCREMENT, ADD UNIQUE (`AutoInc`)
关于python - SQLAlchemy:如何在不将其作为主键的情况下创建整数列auto_increment(和unique)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19243232/