- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我创建了一个time_zones
表。当我尝试填充它时,我收到一个 TypeError
提示我需要包含一个 id
值。
来自 postgresql 的表:
\d+ time_zones
Table "public.time_zones"
Column | Type | Modifiers | Storage | Stats target | Description
------------+-----------------------------+---------------------------------------------------------+----------+--------------+-------------
id | integer | not null default nextval('time_zones_id_seq'::regclass) | plain | |
name | character varying(128) | not null | extended | |
created_at | timestamp without time zone | | plain | |
updated_at | timestamp without time zone | | plain | |
Indexes:
"time_zones_pkey" PRIMARY KEY, btree (id)
"time_zones_name_key" UNIQUE CONSTRAINT, btree (name)
Referenced by:
TABLE "app_users" CONSTRAINT "app_users_time_zone_id_fkey" FOREIGN KEY (time_zone_id) REFERENCES time_zones(id)
models.py
中的 TimeZone 类:
class TimeZone(db.Model):
__table_name__ = 'time_zones'
id = db.Column(db.Integer, db.Sequence('time_zones_id_seq'), primary_key=True, nullable=False)
name = db.Column(db.String(128), nullable=False)
created_at = db.Column(db.TIMESTAMP(timezone=False), default=_get_date)
updated_at = db.Column(db.TIMESTAMP(timezone=False), onupdate=_get_date)
Alembic
迁移文件:
def upgrade():
op.create_table('time_zones',
sa.Column('id', sa.Integer, primary_key=True, nullable=False),
sa.Column('name', sa.String(128), nullable=False, unique=True),
sa.Column('created_at', sa.TIMESTAMP(timezone=False), default=_get_date),
sa.Column('updated_at', sa.TIMESTAMP(timezone=False), onupdate=_get_date))
我尝试通过带有 TypeError
的 flask shell 将名称添加到 time_zones
表:
>>> from app.main.models import TimeZone
>>> from app import db
>>>
>>> tz = TimeZone(name='Central Time (US & Canada)')
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "<string>", line 2, in __init__
File "/usr/local/lib/python3.4/dist-packages/sqlalchemy/orm/instrumentation.py", line 347, in _new_state_if_none
state = self._state_constructor(instance, self)
File "/usr/local/lib/python3.4/dist-packages/sqlalchemy/util/langhelpers.py", line 747, in __get__
obj.__dict__[self.__name__] = result = self.fget(obj)
File "/usr/local/lib/python3.4/dist-packages/sqlalchemy/orm/instrumentation.py", line 177, in _state_constructor
self.dispatch.first_init(self, self.class_)
File "/usr/local/lib/python3.4/dist-packages/sqlalchemy/event/attr.py", line 256, in __call__
fn(*args, **kw)
File "/usr/local/lib/python3.4/dist-packages/sqlalchemy/orm/mapper.py", line 2860, in _event_on_first_init
configure_mappers()
File "/usr/local/lib/python3.4/dist-packages/sqlalchemy/orm/mapper.py", line 2756, in configure_mappers
mapper._post_configure_properties()
File "/usr/local/lib/python3.4/dist-packages/sqlalchemy/orm/mapper.py", line 1710, in _post_configure_properties
prop.init()
File "/usr/local/lib/python3.4/dist-packages/sqlalchemy/orm/interfaces.py", line 183, in init
self.do_init()
File "/usr/local/lib/python3.4/dist-packages/sqlalchemy/orm/relationships.py", line 1612, in do_init
self._process_dependent_arguments()
File "/usr/local/lib/python3.4/dist-packages/sqlalchemy/orm/relationships.py", line 1637, in _process_dependent_arguments
setattr(self, attr, attr_value())
TypeError: id() takes exactly one argument (0 given)
如果我从 app.auth.models
中的 AppUser 类中删除关系,我就不会再收到此错误。所以我一定没有正确设置我的关系。
这是models.py
im auth
模块:
class AppUser(UserMixin, Base):
__tablename__ = 'app_users'
username = db.Column(db.String(128), nullable=False, unique=True)
firstname = db.Column(db.String(128))
lastname = db.Column(db.String(128))
email = db.Column(db.String(128), nullable=False)
phone = db.Column(db.VARCHAR(12))
company = db.Column(db.String(32))
password_hash = db.Column(db.String(255), nullable=False)
# When I kill these two lines I do not get the error.
#time_zone_id = db.Column(db.Integer, db.ForeignKey('time_zones.id', ondelete='cascade'))
#time_zone = db.relationship('TimeZone', backref='app_users', order_by=id)
def __init__(self, username, email, password, firstname, lastname, company, phone):
self.username = username.lower()
self.email = email.lower()
self.firstname = firstname.title()
self.lastname = lastname.title()
self.company = company
self.phone = phone
#self.time_zone_id = time_zone_id
self.set_password(password)
def set_password(self, password):
self.password_hash = generate_password_hash(password)
def verify_password(self, password):
return check_password_hash(self.password_hash, password)
def __repr__(self):
return '<User %r>' % self.username
最佳答案
我刚刚在我自己的代码中解决了一个类似的问题,问题出在定义您在“更新”中注释掉的关系的行上的 order_by=id
。当您以这种方式声明排序时,SQLAlchemy 会尝试使用 AppUser 的 id
属性进行排序,因为声明在 AppUser 类中。由于 AppUser 没有名为“id”的列或其他属性,因此 python 改为访问内置的 id() 方法,该方法不能在没有参数的情况下使用(并且无论如何对排序关系都没有用)。
我敢打赌,将 order_by 参数更改为 order_by=TimeZone.id
或 order_by="TimeZone.id"
会清除错误;类似的更改解决了我的代码中的问题。
关于python - 为什么我得到 "TypeError: id() takes exactly one argument (0 given)"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33331278/
我想使用结构 DataResponse 作为 JSON() 的参数来响应用户。通过初始化 DataResponse 的实例,我得到了错误消息,给出了太多的参数,但给出了所有必要的参数。 type Da
我正在尝试将 google-one-tap 与本地主机上的 django 项目集成。所以我在 Client ID for Web 的 Authorized JavaScript origins 中添加
考虑一个类A,我如何编写一个具有与相同行为的模板 A& pretty(A& x) { /* make x pretty */ return x; } A pretty(A&& x) {
我正在使用 Hibernate envers 3.6.3.Final。我可以审核表,我可以看到 _audit 表中填充了 revision_number、revision_type 和实体数据。 我正
问题详细描述如下: 给定两个单词(beginWord 和 endWord)和字典的单词列表,找出是否存在从 beginWord 到 endWord 的转换序列,这样: 一次只能更改一个字母 每个转换后
我正在尝试解析任何选定的 mysql 表的单行的所有列字段和数据。 这背后的原因是为任何给定的单行创建一个类似“通用”的表解析器。 例如,我有这个表“tbl1”: +----+------------
我有一个列表,它可能包含也可能不包含重复的元素。给定另一个列表/元素集,我需要该列表中存在的所有唯一元素的列表。 Input: input_list = ['android', 'ios', 'and
需要编写一个算法来查找给定字符串在给定索引处的 Anagram,并按字典顺序排序。例如: Consider a String: ABC then all anagrams are in sorted
给定学生和铅笔的数量,假设学生有 154 名,铅笔有 93 名,如何用 Python 编写代码来获得比率。 输出:x:y 或者说给定两个数字的百分比并找出比率。 输出:x:y 最佳答案 import
给定学生和铅笔的数量,假设学生有 154 名,铅笔有 93 名,如何用 Python 编写代码来获得比率。 输出:x:y 或者说给定两个数字的百分比并找出比率。 输出:x:y 最佳答案 import
作为一名端到端自动化测试人员,我一直认为 Given、When、Then 语句(在使用 Cucumber 时合并到 Gherkin 语言中)应该只按 1.Given、2.When、3 的顺序出现.然后
我正在尝试以动态方式传递参数。我想使用 Perl 函数 given(){},但由于某种原因,我不能在其他任何东西中使用它。这就是我所拥有的。 print(given ($parity) { wh
我想在 cucumber 中测试以下功能。但是,我只想处理输入文件一次(以下功能中的@Given)。但是,它似乎每次都执行@Given 步骤。是否可以在以下功能中仅执行一次此@Given? @file
我想知道是否可以使用 given 参数来自 pytest 的 parametrize 函数。 示例: import pytest from hypothesis import given from h
在deep learning tutorials ,所有训练数据都存储在一个shared数组中,只有该数组的索引被传递给训练函数以切出一个小批量。我知道这允许将数据保留在 GPU 内存中,而不是将小块
我正在尝试运行以下代码: foreach my $k (keys %rec) { #switch for watchlist figures given ($k) { #line 93
我正在尝试在完全支持的情况下使用 GWT 规范,但是它的示例 official documentation有点简单。 在 SO 中搜索我发现了这个问题: Specs2 - How to define
我使用hypothesis 已经有一段时间了。我想知道如何重用 @given parts。 我有一些大约 20 行,我将整个 @given 部分复制到几个测试用例之上。 一个简单的测试例子 @give
我在运行 rspec 文件时不断收到错误: Failures:
让我们调用一个函数 function doSomethingAndInvokeCallback(callback){ // do something callback(); } 我可以
我是一名优秀的程序员,十分优秀!