【发布时间】:2020-07-08 10:28:05
【问题描述】:
Flask Sqlalchemy 模型
class Supplier(db.Model):
__tablename__ = 'SUPPLIER'
supplier_id = db.Column(db.Integer, primary_key=True)
supplier_name = db.Column(db.Text, nullable=False)
enable = db.Column(db.Boolean, nullable=False, default=True)
insert_date = db.Column(db.DateTime, nullable=False, default=datetime.utcnow)
当我尝试添加新供应商时,出现错误
db.session.add(Supplier(supplier_name="sup"))
db.session.commit()
堆栈跟踪:
db.session.add(supplier_name="sup")
File "<string>", line 2, in __init__
File "c:\program files (x86)\microsoft visual studio\shared\python37_64\lib\site-packages\sqlalchemy\orm\instrumentation.py", line 376, in _new_state_if_none
state = self._state_constructor(instance, self)
File "c:\program files (x86)\microsoft visual studio\shared\python37_64\lib\site-packages\sqlalchemy\util\langhelpers.py", line 883, in __get__
obj.__dict__[self.__name__] = result = self.fget(obj)
File "c:\program files (x86)\microsoft visual studio\shared\python37_64\lib\site-packages\sqlalchemy\orm\instrumentation.py", line 202, in _state_constructor
self.dispatch.first_init(self, self.class_)
File "c:\program files (x86)\microsoft visual studio\shared\python37_64\lib\site-packages\sqlalchemy\event\attr.py", line 322, in __call__
fn(*args, **kw)
File "c:\program files (x86)\microsoft visual studio\shared\python37_64\lib\site-packages\sqlalchemy\orm\mapper.py", line 3367, in _event_on_first_init
configure_mappers()
File "c:\program files (x86)\microsoft visual studio\shared\python37_64\lib\site-packages\sqlalchemy\orm\mapper.py", line 3255, in configure_mappers
mapper._post_configure_properties()
File "c:\program files (x86)\microsoft visual studio\shared\python37_64\lib\site-packages\sqlalchemy\orm\mapper.py", line 1950, in _post_configure_properties
prop.init()
File "c:\program files (x86)\microsoft visual studio\shared\python37_64\lib\site-packages\sqlalchemy\orm\interfaces.py", line 196, in init
self.do_init()
File "c:\program files (x86)\microsoft visual studio\shared\python37_64\lib\site-packages\sqlalchemy\orm\relationships.py", line 1983, in do_init
self._process_dependent_arguments()
File "c:\program files (x86)\microsoft visual studio\shared\python37_64\lib\site-packages\sqlalchemy\orm\relationships.py", line 2012, in _process_dependent_arguments
setattr(self, attr, attr_value())
TypeError: id() takes exactly one argument (0 given)
我已经尝试了以下方法,但仍然无法正常工作。
-
添加序列
id_seq = db.Sequence('id_seq') supplier_id = db.Column(db.Integer, id_seq, server_default=id_seq.next_value(), primary_key=True) -
添加构造函数
def __init__(self, supplier_name): self.supplier_name = supplier_name
我已经确保表存在,并且所有列都已成功生成。 似乎不仅这个表有这个问题,而且我插入的任何表也会引发这个错误。 以前我使用 PostgresDB 没有问题,现在我切换到 oracle 有这个错误。 请帮忙!
【问题讨论】:
标签: python flask flask-sqlalchemy