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

Python 使用Oracle和sqlalchemy插入新数据时出错,python,oracle,sqlalchemy,flask-sqlalchemy,Python,Oracle,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_

我有一个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).
模型中的错误:存在数据库错误:数据未写入数据库: (cx_Oracle.DatabaseError)DPI-1043:无效数字[SQL:'插入到 某些数据(id、公司数据等)被截断,***'ret\U 0': ,***“date”:datetime.datetime(2019,5,10,1,4,5)}(背景在 此错误发生在:http://sqlalche.me/e/4xp6).
有什么想法吗?

经过一些挖掘后解决了。这是因为尝试插入NaN值。

我不是专家,但我可以想象SQL无法解释原始
日期时间
对象。感谢您的响应。嗯,好的,我会检查,但sqlite在使用相同模式时开箱即用。不,我将所有日期都转换为iso字符串,所以这应该是正确的很好。我认为这与空ID有关。出于某种原因,insert没有为新创建的对象提供ID。我仔细检查了日期问题,但事实并非如此。Oracle可以处理datetime对象。似乎是这个错误关闭了:ret_0':