У меня есть отношение 1-1 к двум таблицам / объектам с использованием flask-sqlalchemy.Я пытаюсь вставить новую строку для одного из них (ссылка через 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).
Есть идеи, пожалуйста?