Yes, I can certainly do that. Sounds pretty simple, actually. I may have
more questions as I dive into this.

Thanks!




On Mon, Apr 24, 2017 at 3:06 PM, mike bayer <mike...@zzzcomputing.com>
wrote:

>
>
> On 04/24/2017 03:42 PM, Greg Silverman wrote:
>
>> My naive first response would be that I want the class to look like
>>
>> class DiagnosisTest(Model):
>> __tablename__= 'vw_svc_diagnosis'
>> #id = Column(Integer, primary_key=True, autoincrement=True)
>> dx_id= Column(String(32),primary_key=True)
>>      first_name= Column(String(255))
>>      last_name= Column(String(255))
>>      mrn= Column(String(255))
>>      dx_code= Column(String(255))
>>      #dx_code_orig = Column(String(255))
>> dx_code_type= Column(String(255))
>>      dx_name= Column(String(255))
>>      #chronic_diagnosis_yn = Column(String(255))
>> diagnosis_datetime= Column(DateTime)
>>
>>
>>
>>      @property
>> def get_diagnosis_groups(self):
>>
>> import itertoolsas itertools
>>
>>          for (dx_code, patient_id), detailsin itertools.groupby(self,
>> keyfunc):
>> diagnosis_group  = DiagnosisGroup(
>>                  dx_code, patient_id
>>              )
>>              diagnosis_group.details= details
>>              for detailin details:
>> detail.group= diagnosis_group
>>              yield diagnosis_group
>>
>>
>> So that I could then instantiate this and access grouped elements like
>> DiagnosisTest.get_diagnosis_groups.patient_id and
>> DiagnosisTest.get_diagnosis_groups.dx_code for example.
>>
>
>
> OK can you add a relationship() to DiagnosisTest that returns a list of
> DiagnosisDetail objects?  that would be all you need here.
>
>
>
>
>> I am sure this does not answer your question, but what I really want to
>> do is have the data grouped within the class and available whenever I
>> instantiate the class.
>>
>> I know what I need, but I am having problems in articulating the details.
>>
>> Thanks for being patient with me! ^_^
>>
>>
>> On Mon, Apr 24, 2017 at 12:21 PM, mike bayer <mike...@zzzcomputing.com
>> <mailto:mike...@zzzcomputing.com>> wrote:
>>
>>
>>
>>     On 04/24/2017 12:51 PM, Greg Silverman wrote:
>>
>>         Hi Mike,
>>         I'm finally getting to this.  Instead of having both a detail
>>         and grouped methods, I would like to have only the grouped
>>         method. I'm not sure I follow your suggestion for the two
>>         methods above and how that would be modified to fit into the
>>         @property in my class.
>>
>>         Could you please elaborate a bit how these would work within
>>         context of the class?
>>
>>
>>     cutting and pasting:
>>
>>
>>        def get_diagnosis_groups(sorted_list_of_diagnosis_detail):
>>
>>              for (dx_code, patient_id), details in
>>     itertools.groupby(sorted_list_of_diagnosisdetail, keyfunc):
>>                  diagnosis_group = DiagnosisGroup(
>>                     dx_code, patient_id
>>                  )
>>                  diagnosis_group.details = details
>>                  for detail in details:
>>                      detail.group = diagnosis_group
>>                  yield diagnosis_group
>>
>>
>>     you want to take out the "sorted_list_of_diagnosis_detail" argument.
>>     OK....but I don't know where you'd like to get this from.  Where is
>>     this "method" going and are you calling that as a classmethod or an
>>     instance method?  what class?   Just show a usage example.
>>
>>
>>
>>
>>
>>
>>
>>         Thanks!
>>
>>         Greg--
>>
>>
>>
>>
>>         On Wed, Mar 1, 2017 at 8:53 PM, mike bayer
>>         <mike...@zzzcomputing.com <mailto:mike...@zzzcomputing.com>
>>         <mailto:mike...@zzzcomputing.com
>>
>>         <mailto:mike...@zzzcomputing.com>>> wrote:
>>
>>
>>
>>              On 03/01/2017 08:27 PM, GMS wrote:
>>
>>                  I have the following class models:
>>
>>
>>                  |  class DiagnosisDetail(Model):
>>                           __tablename__ = 'vw_svc_diagnosis'
>>                           diagnosis_id = Column(String(32),
>>         primary_key=True)
>>                           first_name = Column(String(255))
>>                           last_name = Column(String(255))
>>                           mrn = Column(String(255))
>>                           dx_code = Column(String(255))
>>                           dx_id = Column(String(255),
>>         ForeignKey('dx_group.dx_id'))
>>                           diagnosisgroup = relationship("DiagnosisGroup")
>>                           dx_code_type = Column(String(255))
>>                           dx_name = Column(String(255))
>>
>>                           __mapper_args__ = {
>>                                "order_by":[mrn, dx_name]
>>                          }
>>
>>                       class DiagnosisGroup(Model):
>>                           __tablename__ = 'diagnosis_group'
>>                           dx_id = Column(String(32), primary_key=True)
>>                           mrn = Column(String(255))
>>                           dx_code = Column(String(255))
>>                           dx_code_type = Column(String(255))
>>                           dx_name = Column(String(255))
>>                           diagnosis_datetime = Column(DateTime)
>>
>>                           __mapper_args__ = {
>>                                "order_by":[mrn, dx_name]
>>                          }|
>>
>>
>>
>>                  where the underlying tables for DiagnosisGroup and
>>                  DiagnosisDetail are
>>                  SQL views. DiagnosisGroup is so that I can have a more
>>         succinct
>>                  view of
>>                  the data, since a patient can have the same diagnosis
>> many
>>                  times. I am
>>                  wondering if there is a way to do this within the class
>>         structure
>>                    instead of at the db server?
>>
>>
>>              do you mean, derive a DiagnosisGroup object from a
>>         DiagnosisDetail
>>              without running SQL? (or a list of them?)  (the answer
>>         is..sure?     just build Python code to generate objects from a
>>         list of
>>              DiagnosisDetail objects).
>>
>>              I do not wish to do this through any ORM
>>
>>                  session queries, since these two classes have distinct
>>         use cases
>>                  where
>>                  they bind to wtform views. Thus, I would like to
>>         inherit the
>>                  properties
>>                  of these two classes from another distinct class.
>>
>>                  I have not been able to find anything like this, short
>>                  of [create-column-properties-that-use-a-groupby][1]
>>                         <http://stackoverflow.com/ques
>> tions/25822393/how-can-i-create-column-properties-that-use-
>> a-groupby/25879453
>>         <http://stackoverflow.com/questions/25822393/how-can-i-creat
>> e-column-properties-that-use-a-groupby/25879453>
>>                         <http://stackoverflow.com/ques
>> tions/25822393/how-can-i-create-column-properties-that-use-
>> a-groupby/25879453
>>         <http://stackoverflow.com/questions/25822393/how-can-i-creat
>> e-column-properties-that-use-a-groupby/25879453>>>,
>>                  but this uses session queries to achieve the result. I
>>         would like to
>>                  keep everything within the class itself through
>>         inheritance of the
>>                  DiagnosisDetail class.
>>
>>
>>              You don't need a relational database to do grouping, if you
>>         have a
>>              list of data in memory it can be grouped using sets, or most
>>              succinctly Python's own groupby function:
>>         https://docs.python.org/2/library/itertools.html#itertools.
>> groupby
>>         <https://docs.python.org/2/library/itertools.html#itertools.
>> groupby>
>>                     <https://docs.python.org/2/lib
>> rary/itertools.html#itertools.groupby
>>         <https://docs.python.org/2/library/itertools.html#itertools.
>> groupby>>
>>
>>
>>
>>
>>                  Note: the primary key for DiagnosisGroup, is a
>>         concatenation of
>>                  dx_code
>>                  and another field patient_id. Groupings thus are unique.
>>
>>
>>              OK, so
>>
>>                   def keyfunc(detail):
>>                       return (detail.dx_code, detail.patient_id)
>>
>>                   def get_diagnosis_groups(sorted_li
>> st_of_diagnosis_detail):
>>
>>                       for (dx_code, patient_id), details in
>>              itertools.groupby(sorted_list_of_diagnosisdetail, keyfunc):
>>                           diagnosis_group = DiagnosisGroup(
>>                              dx_code, patient_id
>>                           )
>>                           diagnosis_group.details = details
>>                           for detail in details:
>>                               detail.group = diagnosis_group
>>                           yield diagnosis_group
>>
>>
>>
>>
>>              I do also need
>>
>>                  the FK relation back to the DiagnosisDetail class,
>>         which leads me to
>>                  believe there should be three classes, where the two
>>         above classes
>>                  inherit their properties from a parent class.
>>
>>
>>
>>
>>
>>
>>                  --
>>                  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
>>         <http://stackoverflow.com/help/mcve>
>>                  <http://stackoverflow.com/help/mcve
>>         <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%2bunsubscr...@googlegroups.com>
>>                  <mailto:sqlalchemy%2bunsubscr...@googlegroups.com
>>         <mailto:sqlalchemy%252bunsubscr...@googlegroups.com>>
>>                  <mailto:sqlalchemy+unsubscr...@googlegroups.com
>>         <mailto:sqlalchemy%2bunsubscr...@googlegroups.com>
>>                  <mailto:sqlalchemy%2bunsubscr...@googlegroups.com
>>         <mailto:sqlalchemy%252bunsubscr...@googlegroups.com>>>.
>>
>>                  To post to this group, send email to
>>         sqlalchemy@googlegroups.com <mailto:sqlalchemy@googlegroups.com>
>>                  <mailto:sqlalchemy@googlegroups.com
>>         <mailto:sqlalchemy@googlegroups.com>>
>>                  <mailto:sqlalchemy@googlegroups.com
>>         <mailto:sqlalchemy@googlegroups.com>
>>                  <mailto:sqlalchemy@googlegroups.com
>>         <mailto:sqlalchemy@googlegroups.com>>>.
>>                  Visit this group at
>>         https://groups.google.com/group/sqlalchemy
>>         <https://groups.google.com/group/sqlalchemy>
>>                  <https://groups.google.com/group/sqlalchemy
>>         <https://groups.google.com/group/sqlalchemy>>.
>>                  For more options, visit
>>         https://groups.google.com/d/optout
>>         <https://groups.google.com/d/optout>
>>                  <https://groups.google.com/d/optout
>>         <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
>>         <http://stackoverflow.com/help/mcve>
>>              <http://stackoverflow.com/help/mcve
>>         <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/topic/sqlalchemy/t124IuWhNI0/uns
>> ubscribe
>>         <https://groups.google.com/d/topic/sqlalchemy/t124IuWhNI0/un
>> subscribe>
>>                     <https://groups.google.com/d/t
>> opic/sqlalchemy/t124IuWhNI0/unsubscribe
>>         <https://groups.google.com/d/topic/sqlalchemy/t124IuWhNI0/un
>> subscribe>>.
>>              To unsubscribe from this group and all its topics, send an
>>         email to
>>         sqlalchemy+unsubscr...@googlegroups.com
>>         <mailto:sqlalchemy%2bunsubscr...@googlegroups.com>
>>              <mailto:sqlalchemy%2bunsubscr...@googlegroups.com
>>         <mailto:sqlalchemy%252bunsubscr...@googlegroups.com>>.
>>              To post to this group, send email to
>>         sqlalchemy@googlegroups.com <mailto:sqlalchemy@googlegroups.com>
>>              <mailto:sqlalchemy@googlegroups.com
>>         <mailto:sqlalchemy@googlegroups.com>>.
>>              Visit this group at
>>         https://groups.google.com/group/sqlalchemy
>>         <https://groups.google.com/group/sqlalchemy>
>>              <https://groups.google.com/group/sqlalchemy
>>         <https://groups.google.com/group/sqlalchemy>>.
>>              For more options, visit https://groups.google.com/d/optout
>>         <https://groups.google.com/d/optout>
>>              <https://groups.google.com/d/optout
>>         <https://groups.google.com/d/optout>>.
>>
>>
>>
>>
>>         --         Greg M. Silverman
>>
>>            › flora-script <http://flora-script.grenzi.org/
>>         <http://flora-script.grenzi.org/>> ‹
>>         **› grenzi.org <http://grenzi.org> <http://grenzi.org/> ›
>>
>>
>>         --         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
>>         <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%2bunsubscr...@googlegroups.com>
>>         <mailto:sqlalchemy+unsubscr...@googlegroups.com
>>         <mailto:sqlalchemy%2bunsubscr...@googlegroups.com>>.
>>         To post to this group, send email to sqlalchemy@googlegroups.com
>>         <mailto:sqlalchemy@googlegroups.com>
>>         <mailto:sqlalchemy@googlegroups.com
>>         <mailto:sqlalchemy@googlegroups.com>>.
>>         Visit this group at https://groups.google.com/group/sqlalchemy
>>         <https://groups.google.com/group/sqlalchemy>.
>>         For more options, visit https://groups.google.com/d/optout
>>         <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
>>     <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/topic/sqlalchemy/t124IuWhNI0/unsubscribe
>>     <https://groups.google.com/d/topic/sqlalchemy/t124IuWhNI0/unsubscribe
>> >.
>>     To unsubscribe from this group and all its topics, send an email to
>>     sqlalchemy+unsubscr...@googlegroups.com
>>     <mailto:sqlalchemy%2bunsubscr...@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
>>     <https://groups.google.com/group/sqlalchemy>.
>>     For more options, visit https://groups.google.com/d/optout
>>     <https://groups.google.com/d/optout>.
>>
>>
>>
>>
>> --
>> Greg M. Silverman
>>
>>   › flora-script <http://flora-script.grenzi.org/> ‹
>> **› grenzi.org <http://grenzi.org/> ›
>>
>> --
>> 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/t124IuWhNI0/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.
>



-- 
Greg M. Silverman

 ›  flora-script <http://flora-script.grenzi.org/> ‹
 ›  grenzi.org  ›

-- 
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