Thanks Mike.

On Sun, Oct 16, 2016 at 7:14 AM, Mike Bayer <mike...@zzzcomputing.com>
wrote:

>
>
> On 10/14/2016 06:08 PM, Jinghui Niu wrote:
>
>> I have the following Table model representing a timeline.
>>
>> |
>> classTimeRange(Base):
>>
>>
>>     __tablename__ ="time_line"
>>
>>
>>     record_id =Column(Integer,primary_key=True)
>>     level =Column(String,nullable=False)# e.g. "Point", "Range"
>>     content =Column(String,nullable=False)
>>     language_marker =Column(String)# this one column is optional and
>> needs to be queried
>>     immediate_parent_id =Column(Integer,ForeignKey('ti
>> me_line.record_id'))
>>     child_timelines
>> =relationship('TimeRange',backref=backref('parent_timeline',
>> remote_side=[record_id]))
>> |
>>
>>
>> The language_marker Column is the one that needs to be queried in a
>> recursive manner. Not all records have such an attribute, and the
>> business logic is: along the hierarchy lineage from the root down to the
>> child timelines, at least one level of the TimeRange instance carries
>> such an attribute, and the one in the lowest level should be returned.
>> This works a little like cascading style sheet, where if the TimeRange
>> object itself doesn't have such an attribute, just look further up one
>> level above, util found one, and the latest defined style wins.
>>
>> What is the technical direction I should look into to implement such
>> queries? I'm using SQLAlchemy and the backend is SQLite. Thanks.
>>
>
> Someone else can probably work out the details on this one, but the
> general technique on the SQL side is to use a recursive query.  With
> Postgresql / SQL Server this is a CTE using WITH RECURSIVE, with Oracle I
> *think* they support this syntax also now though historically it's been
> "CONNECT BY", and then with any other DB like MySQL / SQlite it's basically
> nothing.
>
> The other technique, which I tend to prefer if it can be made feasible, is
> that if I'm working with overall a limited number of rows in the first
> place, such as all of these records where language_marker may be
> significant all belong to some common "document id" or something where
> there are only a few hundred or a few thousand rows that would matter for
> the whole operation I'm doing, I pull it into memory and assemble it into a
> tree hierarchy right there.
>
>
>
>> --
>> SQLAlchemy -
>> The Python SQL Toolkit and Object Relational Mapper
>>
>> http://www.sqlalchemy.org/
>>
>> To post example code, please provide an MCVE: Minimal, Complete, and
>> Verifiable Example. See http://stackoverflow.com/help/mcve for a full
>> description.
>> ---
>> You received this message because you are subscribed to the Google
>> Groups "sqlalchemy" group.
>> To unsubscribe from this group and stop receiving emails from it, send
>> an email to sqlalchemy+unsubscr...@googlegroups.com
>> <mailto:sqlalchemy+unsubscr...@googlegroups.com>.
>> To post to this group, send email to sqlalchemy@googlegroups.com
>> <mailto:sqlalchemy@googlegroups.com>.
>> Visit this group at https://groups.google.com/group/sqlalchemy.
>> For more options, visit https://groups.google.com/d/optout.
>>
>
> --
> SQLAlchemy - The Python SQL Toolkit and Object Relational Mapper
>
> http://www.sqlalchemy.org/
>
> To post example code, please provide an MCVE: Minimal, Complete, and
> Verifiable Example.  See  http://stackoverflow.com/help/mcve for a full
> description.
> --- You received this message because you are subscribed to a topic in the
> Google Groups "sqlalchemy" group.
> To unsubscribe from this topic, visit https://groups.google.com/d/to
> pic/sqlalchemy/uUhcft4S7-E/unsubscribe.
> To unsubscribe from this group and all its topics, send an email to
> sqlalchemy+unsubscr...@googlegroups.com.
> To post to this group, send email to sqlalchemy@googlegroups.com.
> Visit this group at https://groups.google.com/group/sqlalchemy.
> For more options, visit https://groups.google.com/d/optout.
>

-- 
SQLAlchemy - 
The Python SQL Toolkit and Object Relational Mapper

http://www.sqlalchemy.org/

To post example code, please provide an MCVE: Minimal, Complete, and Verifiable 
Example.  See  http://stackoverflow.com/help/mcve for a full description.
--- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sqlalchemy+unsubscr...@googlegroups.com.
To post to this group, send email to sqlalchemy@googlegroups.com.
Visit this group at https://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.

Reply via email to