- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有以下模型来描述我的数据库模式:
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String, ForeignKey
from sqlalchemy.orm import relationship, backref
import sqlalchemy.dialects.mysql as mysql
Base = declarative_base()
class Country(Base):
__tablename__ = 'countries'
__table_args__ = {
'mysql_engine': 'InnoDB',
'mysql_charset': 'utf8'
}
id = Column(mysql.TINYINT(unsigned=True), primary_key=True)
name = Column(mysql.VARCHAR(30), nullable=False)
competitions = relationship('Competition', backref='country')
class Competition(Base):
__tablename__ = 'competitions'
__table_args__ = {
'mysql_engine': 'InnoDB',
'mysql_charset': 'utf8'
}
id = Column(mysql.INTEGER(unsigned=True), primary_key=True)
name = Column(mysql.VARCHAR(30), nullable=False)
country_id = Column(mysql.TINYINT(unsigned=True), ForeignKey('countries.id'))
teams = relationship('Team', backref("competition") )
class Team(Base):
__tablename__ = 'teams'
__table_args__ = {
'mysql_engine': 'InnoDB',
'mysql_charset': 'utf8'
}
id = Column(mysql.INTEGER(unsigned=True), primary_key=True)
name = Column(mysql.VARCHAR(30), nullable=False)
competition_id = Column(mysql.INTEGER(unsigned=True), ForeignKey('competitions.id'), nullable=False)
当我尝试创建一个像这样的团队时:
team = Team()
我在上面的命令后得到以下回溯:
Traceback (most recent call last):
File "/home/giorgos/apps/Aptana_Studio_3/plugins/org.python.pydev_2.6.0.2012062121/pysrc/pydevd.py", line 1392, in <module>
debugger.run(setup['file'], None, None)
File "/home/giorgos/apps/Aptana_Studio_3/plugins/org.python.pydev_2.6.0.2012062121/pysrc/pydevd.py", line 1085, in run
pydev_imports.execfile(file, globals, locals) #execute the script
File "/home/giorgos/Documents/Aptana Studio 3 Workspace/BetPick/tests/insert_models.py", line 21, in <module>
team = Team()
File "<string>", line 2, in __init__
File "/home/giorgos/.virtualenvs/venv/local/lib/python2.7/site-packages/sqlalchemy/orm/instrumentation.py", line 309, in _new_state_if_none
state = self._state_constructor(instance, self)
File "/home/giorgos/.virtualenvs/venv/local/lib/python2.7/site-packages/sqlalchemy/util/langhelpers.py", line 485, in __get__
obj.__dict__[self.__name__] = result = self.fget(obj)
File "/home/giorgos/.virtualenvs/venv/local/lib/python2.7/site-packages/sqlalchemy/orm/instrumentation.py", line 157, in _state_constructor
self.dispatch.first_init(self, self.class_)
File "/home/giorgos/.virtualenvs/venv/local/lib/python2.7/site-packages/sqlalchemy/event.py", line 291, in __call__
fn(*args, **kw)
File "/home/giorgos/.virtualenvs/venv/local/lib/python2.7/site-packages/sqlalchemy/orm/mapper.py", line 2342, in _event_on_first_init
configure_mappers()
File "/home/giorgos/.virtualenvs/venv/local/lib/python2.7/site-packages/sqlalchemy/orm/mapper.py", line 2258, in configure_mappers
mapper._post_configure_properties()
File "/home/giorgos/.virtualenvs/venv/local/lib/python2.7/site-packages/sqlalchemy/orm/mapper.py", line 1167, in _post_configure_properties
prop.init()
File "/home/giorgos/.virtualenvs/venv/local/lib/python2.7/site-packages/sqlalchemy/orm/interfaces.py", line 128, in init
self.do_init()
File "/home/giorgos/.virtualenvs/venv/local/lib/python2.7/site-packages/sqlalchemy/orm/properties.py", line 911, in do_init
self._determine_joins()
File "/home/giorgos/.virtualenvs/venv/local/lib/python2.7/site-packages/sqlalchemy/orm/properties.py", line 1034, in _determine_joins
self.secondary)
File "/home/giorgos/.virtualenvs/venv/local/lib/python2.7/site-packages/sqlalchemy/orm/properties.py", line 1028, in _search_for_join
a_subset=mapper.local_table)
File "/home/giorgos/.virtualenvs/venv/local/lib/python2.7/site-packages/sqlalchemy/sql/util.py", line 262, in join_condition
b.foreign_keys,
AttributeError: 'tuple' object has no attribute 'foreign_keys'
我做错了什么?
最佳答案
backref
应该是 Competition.teams
声明中的关键字参数:
class Competition(Base):
# ...
teams = relationship('Team', backref="competition")
参见 documentation on relationship
.您可以使用 backref
callable显式配置反向引用,但您仍然必须使用 backref
关键字:
class Competition(Base):
# ...
teams = relationship('Team', backref=backref("competition", ... additional keywords ...))
关于python - SQLAlchemy , 属性错误 : 'tuple' object has no attribute 'foreign_keys' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11922138/
我的模型是这样的: class Post :shareable, :primary_key => :guid, :foreign_key => :shareable_guid has_many
我有一个城市模型和城市表。服务模型和服务表。一项服务有一个城市(起源城市和目的地城市)。一个城市“有很多”服务。在 services 表中,有两列关于城市:origin_city_id 和destin
我有一个名为 animals 的表,其中包含以下列: id: INT state: VARCHAR 另一个名为 houses 的表具有以下列: id: INT animal_id: INT color
这是集群表: ╭────╥────────────┬─────────────╮ │ id ║ name │ prefix │ ╞════╬════════════╪══════
我得到了以下模型: class Coaching < ActiveRecord::Base ... belongs_to :user belongs_to :coach, class_na
我们有一些从提供非整数唯一 ID 的第三方导入的数据。 在 Rails 2.2.2 中,我们可以在 has_many 与非整数列的关系上使用 :foreign_key 并且它有效。 但是我们现在升级到
如果你有 Parent has_many :children Child Child 上的外键(到 Parent)和相应的 belongs_to :parent 是否有任何原因可能不受欢迎? 什么时
我正在使用 Rails 3,我有一个简单的模型 class Post has_many :comments end 我正在做一些元编程,我需要知道注释表中的 foreign_key 的名称。 在上
我正在处理一个相当简单的 has_many through: 情况,我可以使 class_name/foreign_key 参数在一个方向上工作,但不能在另一个方向上工作。也许你能帮帮我。 (附注:我
我有以下一组模型: class Cardstock :hex, :foreign_key => :hex has_many :palette_colors, :through => :color
在合适的 sqlite 版本中,我们可以通过“PRAGMA foreign_keys = ON”强制外键约束。但是,用户无法每次建立连接时都登录数据库。所以我想知道我们如何让它在 sqlalchemy
我最近遇到了这段代码。用户有很多答案。 :class_name 和 :foreign_key 的目的是什么? class Answer 'Question", :foreign_key => 'qu
我最近遇到了这段代码。用户有很多答案。 :class_name 和 :foreign_key 的目的是什么? class Answer 'Question", :foreign_key => 'qu
是否有一个 Postgresql 数据库配置等同于 Sqlite 中的 PRAGMA foreign_keys = ON? 最佳答案 您可以测试禁用表上的所有触发器,FK 是通过 PostgreSQL
假设您为电视节目创建了一个 imdb 类型的网站。您有一个 Show,其中包含许多附加的 episodes 和一群 people 现在我通过contribution 表将people 链接到episo
我有 2 个模型与 has_one 和 has_many 关联。 realm.rb class Realm < ActiveRecord::Base has_one :realm_type,
我在一个实体中有两个外键引用另一个实体。这是它的样子 class Review(db.Model): __tablename__ = 'Review' id = db.
从文档中我读到: class Book < ApplicationRecord belongs_to :author, class_name: "Patron", foreign_key: "pa
我用 Flask-SQLalchemy 创建了 3 个模型:用户、角色、用户角色 角色.py: class Role( ActiveRecord, db.Model ): __tablenam
我创建了一个 SQL 文件,它加载到 sqlite3 中并为我创建了一堆表。在该 sql 文件中,我尝试使用 pragma 强制执行 foreign_keys: PRAGMA foreign_keys
我是一名优秀的程序员,十分优秀!