我想使用 Python 和 Flask 框架以及 SQLAlchemy 模块在我的数据库(Oracle 11g,但 Ubuntu 16.04 的 Express 版本)中创建一个新表。表的第一个字段是 ID,是一个整数字段,我希望它自动增量,但 Oracle 数据库不支持自动增量。我有一个表单来添加新评论,但是当我尝试添加新记录时,它会报告错误:
sqlalchemy.exc.IntegrityError: (cx_Oracle.IntegrityError) ORA-01400: 无法将 NULL 插入 ("WIKTOR"."TBL_COMMENTARIOS"."ID") [SQL: 'INSERT INTO tbl_comentarios (usuario, comentario, fecha) VALUES (:usuario) , :comentario, :fecha) 返回 tbl_comentarios.id INTO :ret_0'] [参数: {'usuario': 'wiktor', 'comentario': 'hola', 'fecha': datetime.datetime(2017, 5, 24, 11, 23, 45, 39450), 'ret_0': }]
基本上它说ID不能为空,发生这种情况是因为表单中没有字段可以添加它,所以它发送空ID,然后数据库模型的自动增量不起作用。这是代码:
db = SQLAlchemy()
class Comentarios(db.Model):
__tablename__ = 'tbl_comentarios'
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
usuario = db.Column(db.String(50))
comentario = db.Column(db.Text())
fecha = db.Column(db.DateTime, default = datetime.datetime.now)
def __init__(self, usuario, comentario):
self.usuario = usuario
self.comentario = comentario
我也尝试过:
id = db.Column(db.Integer, primary_key=True)
该代码在 SQL 数据库中确实有效,但在 Oracle 数据库中均无效。
对不起我的英语,我希望有人能帮助我......
谢谢!