使用Oracle和sqlalchemy插入新数据时出错

时间:2019-05-10 10:42:44

标签: python oracle sqlalchemy flask-sqlalchemy

我使用flask-sqlalchemy具有两个表/对象的1-1关系。我试图为其中的一个插入新行(通过FK在第一张表中引用一行),但失败。相同的代码曾经与sqlite一起使用,但是停止与Oracle 12.2.x一起使用。

class SomeData(db.Model):
     id = db.Column("id", db.Integer, db.Sequence('id_seq', start=1), 
                           primary_key=True)
     company_data_label = db.Column(db.String(24), 
     db.ForeignKey('company.dataLabel'), nullable=False)
     ...more data

     @staticmethod
     def new_from_dict(data):
           data = SomeData(
                 company=data["company"],
                 more fields           
     )
     return data

class Company(db.Model):
     id = db.Column("id", db.Integer, db.Sequence('id_seq', start=1), 
               primary_key=True)
     employee_id = db.Column(db.Integer, db.ForeignKey('analyst.id'), 
                 nullable=True)
     data = db.relationship('SomeData', backref='company', lazy=True)
     dataLabel = db.Column(db.String(24), nullable=False, unique=True)

我在Company表中有一行可以引用,而我只是想在SomeData中添加一行:

new_datum = SomeData.new_from_dict(row_dict)
current_app.logger.debug(new_datum)
get_db().session.add(new_datum)
get_db().session.commit()

其中row_dict是一个字典,其中包含一个“ company” =从数据库中检索到的Company对象。

我得到的错误是:

 ERROR in models: There were database errors: data not written in DB: 
(cx_Oracle.DatabaseError) DPI-1043: invalid number [SQL: 'INSERT INTO 
some_data (id, company_data, ....truncated.... , ***'ret_0': 
<cx_Oracle.STRING with value [[], [], [], [], [], [], [], [], [], [], [], 
[], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], 
[], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], 
[]]>,*** '"date"': datetime.datetime(2019, 5, 10, 1, 4, 5)}] (Background on 
 this error at: http://sqlalche.me/e/4xp6).

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

经过一些挖掘后解决。这是由于尝试插入NaN值。