have extracted the relevant parts of my model and I got to something
that could become a FAQ item or a tutorial or an addition to the docs?
The question is which and where? Here is the code. The one thing that
still puzzles me is that I had to move my State table declaration
before Policy as using "State.code" or something similar didn't work.
class State(DeclarativeBase):
__tablename__ = 'state'
code = Column(String(2), primary_key=True)
name = Column(String(50))
class Policy(DeclarativeBase):
__tablename__ = 'policy'
id = Column(Integer, primary_key=True)
state_of_policy_code = Column(String(2) ,ForeignKey('state.code'))
state_of_domicile_code = Column(String(2) ,ForeignKey('state.code'))
policy_state =
relation('State',backref='state_policies',primaryjoin=state_of_policy_code= =State.code)
domicile_state =
relation('State',backref='domicile_policies',primaryjoin=state_of_domicile_ code==State.code)
#test code to ran, maybe in a python shell for proper feedback.
ny = model.State()
ny.code = 'ny'
fl = model.State()
fl.code = 'fl'
p = model.Policy()
p.policy_state = ny
p.domicile_state = fl
model.save(p)
model.DBSession.flush()#note this is TurboGears place for SQLAlchemy's
session object.
ny.state_policies[0].policy_state.code
you can use strings with Python in them when you use declarative even
with args like primaryjoin, so you could say things like:
class Policy(DeclarativeBase):
__tablename__ = 'policy'
policy_state =
relation('State',backref='state_policies',primaryjoin="Policy.state_of_poli cy_code==State.code")
domicile_state =
relation('State',backref='domicile_policies',primaryjoin="Policy.state_of_d omicile_code==State.code")
this would eliminate the need to have your classes in a particular
分享到:
相关推荐
3. **比较表结构**:逐个比较两个数据库中的表,查找表名的差异以及每个表中字段(列)的差异,如字段数量、字段名称、字段类型、主键、外键等。 4. **反馈结果**:将发现的差异以清晰易懂的方式呈现给用户,可能是...
在SQL Server数据库设计中,有时候会遇到一个表的两个字段需要关联到同一个表的情况,这通常发生在需要通过多个关联字段获取同一张表的不同信息时。本文将深入探讨如何解决这个问题,以及提供相应的代码示例。 首先...
例如,拿转账来说,假设用户 A 和用户 B 两者的钱加起来一共是 20000,那么不管 A 和 B 之间如何转账,转几次账,事务结束后两个用户的钱相加起来应该还得是 20000,这就是事务的一致性。 3. 隔离性(Isolation):...
在这个关联表中,我们会定义两个外键,一个指向 `Student` 表的主键 (`sfid`),另一个指向 `Course` 表的主键 (`cfid`)。 在 Hibernate 映射文件 `student.hbm.xml` 中,这部分的配置如下所示: ```xml ``` ...
在EF中,这需要一个中间表来存储双方实体的连接信息,并在两个实体类中都定义导航属性指向这个中间表。 压缩包中的文件列表揭示了项目结构: - **App.Config**:这是应用程序的配置文件,通常包含数据库连接字符串...
2. **外联接**:外联接是一种特殊的联接类型,它可以在联接的结果集中包含那些至少在一个表中有匹配行的记录,而不仅仅是同时存在于两个表中的记录。这对于保留不完全匹配的记录非常有用。 3. **DBMS (Database ...
- **实体完整性**: 主键的唯一性,防止同一张表中出现重复记录。 - **参照完整性**: 外键约束,确保引用的完整性,即主表中的每一项记录必须存在于从表中。 - **自定义完整性**: 通过定义约束条件(如 CHECK 约束)...
- **唯一外键关联映射**:通过唯一外键来关联两个实体。 - **一对多关联映射**: - **单向关联**:一方只知道另一方的存在,但另一方不知道这一方。 - **双向关联**:双方都知道对方的存在。 - **多对多关联...
- **死锁**:当两个或更多个事务互相等待对方释放锁时,就会形成死锁。死锁会导致事务无法继续执行。 - **解决方法**: - 使用死锁检测机制,自动解决死锁。 - 调整事务顺序,避免死锁发生。 - 优化应用程序...
- **等值联合**:当两个表格中有相同的字段时,可以使用等值联合来连接这两个表格。 - **不等值联合**:当连接条件不是简单的等式时,可以使用不等值联合。 - **外部联合与内部联合**:外部联合(OUTER JOIN)包括左...
type 类型,有两个可选的类型: StandarDimension 和 TimeDimension ,默认为 StandardDimension caption 标题 , 在表示层显示的 UsagePrefix 加前缀 , 消除歧义 foreignKey 外键,对应事实表中的一个列,它...
`用于维护引用完整性,关联两个表的列。 8. **查询操作**: 使用`SELECT`语句进行数据查询,如`SELECT * FROM table_name;`可获取表中的所有数据。实验中对12张表进行了查询,这有助于理解数据间的关系。 实验...
- 考虑到年薪计算,可以假设一年工作时间为12个月。 - SQL语句:`SELECT ename, sal * 12 AS annual_salary FROM emp ORDER BY annual_salary DESC;` 12. **列出所有雇员的雇员名称、部门名称和薪金。** - SQL...