【发布时间】:2017-05-24 09:31:44
【问题描述】:
我想使用带有 SQLAlchemy 模块的 Python 和 Flask 框架在我的数据库(Oracle 11g 但 Ubuntu 16.04 的 Express 版)中创建一个新表。它和 ID 表的第一个字段是一个整数字段,我希望它自动递增,但 Oracle 数据库不支持自动递增。我有一个添加新评论的表单,但是当我尝试添加新记录时,它会报告错误:
sqlalchemy.exc.IntegrityError: (cx_Oracle.IntegrityError) ORA-01400: cannot insert NULL into ("WIKTOR"."TBL_COMENTARIOS"."ID") [SQL: 'INSERT INTO tbl_comentarios (usuario, comentario, fecha) VALUES (:usuario, :comentario, :fecha) 返回 tbl_comentarios.id 到 :ret_0'] [参数: {'usuario': 'wiktor', 'commentario': '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 数据库中均无效。
对不起我的英语,我希望有人可以帮助我...... 谢谢!
【问题讨论】:
标签: python database flask oracle11g flask-sqlalchemy