擅长:python、mysql、java
<p>使用<a href="http://docs.sqlalchemy.org/en/latest/orm/basic_relationships.html" rel="nofollow noreferrer">^{<cd1>}</a>允许从<code>Marker</code>表访问<code>marker_type</code>,并指定一个<code>ForeignKey</code>约束,以便SQLAlchemy理解表之间的关系。在</p>
<p>这允许您从标记记录轻松访问MarkerType属性,并对<code>MarkerType.name</code>进行查询。下面显示插入两条记录,然后根据属性<code>name</code>进行过滤。在</p>
<pre><code>>>> db.session.add(Marker(marker_type=MarkerType(name="blue")))
>>> db.session.add(Marker(marker_type=MarkerType(name="red")))
>>> db.session.commit()
>>> markers = Marker.query.all()
>>> print({m._marker_key: m.marker_type.name for m in markers})
{1: 'blue', 2: 'red'}
>>> result = Marker.query.filter(Marker._marker_type_key==MarkerType._marker_type_key) \
... .filter(MarkerType.name=='blue').all()
>>> print({m._marker_key: m.marker_type.name for m in result})
{1: 'blue'}
</code></pre>
<p>类的声明顺序并不重要,类需要一起声明。不过,架构必须针对<code>db</code>的同一实例注册,当您查询表时,需要导入您引用的表类。在</p>
<p>将<code>relationship</code>和<code>ForeignKey</code>添加到标记后,声明性模式将变为:</p>
^{pr2}$