<div dir="ltr">Hi Arthur!<br><br>I think that I understand now what is the problem that you want to solve.<br><br>I just make some example repository which you can find useful. This repository represents a basic example of how PonyORM-based project with many entities can be organized. It contains several modules:<div><br></div><div>  * `base_entities.py` - defines `db` object and some common entities;</div><div>  * `forum_entities.py` - defines some additional entities;</div><div>  * `university_entities.py` - defines some additional entities;</div><div>  * `all_entities.py` - collect all entities together;</div><div>  * `db_settings.py` - define parameters to connect to the database;</div><div>  * `db_utils.py` - define function which connect to the database;</div><div>  * `db_loading.py` - populating some initial data;</div><div>  * `main.py` - the main program.<br><br>You can find the repository on GitHub: <a href="https://github.com/kozlovsky/ponymodules">https://github.com/kozlovsky/ponymodules</a><br>I also attached all files right to this message<br><br>Actually, it is very similar to the structure that you suggest in your last messages. But maybe you will find some new ideas here.<br><br>Regards,<br>Alexander Kozlovsky<br><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Nov 6, 2014 at 6:18 AM, Goldberg, Arthur P <span dir="ltr"><<a href="mailto:arthur.p.goldberg@mssm.edu" target="_blank">arthur.p.goldberg@mssm.edu</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">



<div>
<div style="word-wrap:break-word">Here's one possible solution:
<div>1) make a singleton database handle, as in theDB.py:</div>
<div></div>
</div>
<div style="word-wrap:break-word">
<div></div>
<div>2) use the one handle everywhere it's needed, as in geneticsClasses.py:</div>
<div></div>
</div>
<div style="word-wrap:break-word">
<div></div>
<div>3) also use the handle in the connect() function, in geneticsDBMScommon.py:</div>
<div></div>
</div>
<div style="word-wrap:break-word">
<div></div>
<div>4) query programs then use the dbms entity classes and geneticsDBMScommon, basically like this: </div>
<div><br>
</div>
<div>
<blockquote type="cite">
<div>#!/usr/bin/env python</div>
<div><br>
</div>
<div>from pony.orm import *</div>
<div>import sys, os</div>
<div>import argparse</div>
<div><br>
</div>
<div>from geneticsDBMScommon import *</div>
<div>from geneticsClasses import *</div>
<div><br>
</div>
<div>def parseArgs( ):</div>
<div>    parser = argparse.ArgumentParser(description="""Analyze variants""" )</div>
<div>    parser.add_argument('DBMS', type=str, help="key for the DBMS, an index into the access params in DBMScreds" )</div>
<div>    args = parser.parse_args()</div>
<div>    return args</div>
<div><br>
</div>
<div>args=parseArgs()</div>
<div>Connect( args.DBMS, debug=True )</div>
</blockquote>
</div>
<div>
<div>o o o</div>
</div>
<div><br>
</div>
<div><br>
</div>
<div><br>
<div>
<div>On Nov 5, 2014, at 1:46 PM, Arthur Goldberg <<a href="mailto:Arthur.Goldberg@mssm.edu" target="_blank">Arthur.Goldberg@mssm.edu</a>></div><div><div class="h5">
<div> wrote:</div>
<br>
<blockquote type="cite">
<div style="word-wrap:break-word"><br>
<div>
<div>On Nov 5, 2014, at 1:29 PM, Arthur Goldberg <<a href="mailto:Arthur.Goldberg@mssm.edu" target="_blank">Arthur.Goldberg@mssm.edu</a>></div>
<div> wrote:</div>
<br>
<blockquote type="cite">
<div>
<div style="word-wrap:break-word">Hello Alexander
<div><br>
</div>
<div> let me be more specific.</div>
<div> I have a number of modules that query, update, delete against the database.</div>
<div> I want to centralize all the database bind, mapping,  and table deletion operations in one module that other modules can call.</div>
<div> Here's my effort to write that centralized module.</div>
<div> The only method is:</div>
<div>Connect( DBMS='arthur_minerva', entityNames=[], dropAndCreateTable=False, debug=False )</div>
<div>DBMS is simply a key into a dictionary of database credential parameters. That works fine, and is used by bind.</div>
<div>entityNames is a list of entities;  I want to connect() to make sure that if an  entity is declared as a pony db  entity then it is in the database</div>
<div>dropAndCreateTable  controls whether tables are dropped; if it is true then tables for all entities should be dropped and then created</div>
<div>
<div><br>
</div>
<div> with the call:</div>
<div>
<div>Connect( MyDropAndCreateTables.args.DBMS, entityNames='CNV Subject'.split(), </div>
<div>            dropAndCreateTable=True, debug=True )</div>
</div>
<div>
<div> this does not work, however:</div>
</div>
<div><br>
</div>
</div>
</div>
</div>
</blockquote>
it generates this error:</div>
<div>
<div>b4 db.bind</div>
<div>GET NEW CONNECTION</div>
<div>RELEASE CONNECTION</div>
<div>db.bind</div>
<div>b4 db.generate_mapping</div>
<div>GET CONNECTION FROM THE LOCAL POOL</div>
<div>SET foreign_key_checks = 0</div>
<div>COMMIT</div>
<div>SET foreign_key_checks = 1</div>
<div>CLOSE CONNECTION</div>
<div>db.generate_mapping</div>
<div>entity: CNV</div>
<div>entityObj: <class 'geneticsClasses.CNV'></div>
<div>geneticsDBMScommon.pyc: WARNING: Pony MappingError: Database object is not bound with a provider yet</div>
<div>geneticsDBMScommon.pyc: WARNING: Cannot drop_table()</div>
<div><br>
</div>
<div><br>
</div>
<blockquote type="cite">
<div>
<div style="word-wrap:break-word">
<div>
<div></div>
<div></div>
</div>
</div>
<div style="word-wrap:break-word">
<div>
<div></div>
<div></div>
</div>
</div>
<div style="word-wrap:break-word">
<div>
<div></div>
<div><br>
</div>
<div>I am using mysql. </div>
<div><br>
<div>
<div>On Nov 4, 2014, at 4:39 PM, Alexander Kozlovsky <<a href="mailto:alexander.kozlovsky@gmail.com" target="_blank">alexander.kozlovsky@gmail.com</a>> wrote:</div>
<blockquote type="cite">
<div dir="ltr"><span style="font-family:arial,sans-serif;font-size:13px">Hi Arthur,<br>
<br>
> How can I have the general purpose programs load all the pony entities, but then use only those specified on a command line?<br>
</span><br>
What do you mean by 'use'? Why this general purpose program can't use all entities? Can you provide some example?<br>
<br>
<div><br>
<div>On Wed, Nov 5, 2014 at 12:24 AM, Goldberg, Arthur P <span dir="ltr">
<<a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__mailto-3Aarthur.p.goldberg-40mssm.edu&d=AAMFaQ&c=4R1YgkJNMyVWjMjneTwN5tJRn8m8VqTSNCjYLg1wNX4&r=TntoeYH7lekXzpBRjXwLTkqiWTbWAvp3pHKo_kZp5qI&m=-l9d_YgpS5Br4HVerevDUPDePIdahRQvh6kua6GEKCg&s=8BLVACjagdDyNx90SlAn1F7tsSllEw4K5MHFxb6KM1o&e=" target="_blank">arthur.p.goldberg@mssm.edu</a>></span>
 wrote:<br>
<blockquote style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hi Guys<br>
<br>
I've pony entities (class foo(db.Entity), etc.) definitions in multiple modules. And I've several general purpose programs: 1) connect to the dbms and optionally create tables, 2) load a file into a table, etc.<br>
How can I have the general purpose programs load all the pony entities, but then use only those specified on a command line?<br>
<br>
Is this clear?<br>
<br>
thanks<br>
Arthur<br>
<br>
_______________________________________________<br>
ponyorm-list mailing list<br>
<a href="mailto:ponyorm-list@ponyorm.org" target="_blank">ponyorm-list@ponyorm.org</a><br>
<a href="https://urldefense.proofpoint.com/v2/url?u=https-3A__mailman-2Dmail5.webfaction.com_listinfo_ponyorm-2Dlist&d=AAMFaQ&c=4R1YgkJNMyVWjMjneTwN5tJRn8m8VqTSNCjYLg1wNX4&r=TntoeYH7lekXzpBRjXwLTkqiWTbWAvp3pHKo_kZp5qI&m=-l9d_YgpS5Br4HVerevDUPDePIdahRQvh6kua6GEKCg&s=ZTWdoePYiHrdwy3YThpUs2-mmvop7hGq2ibwteX9CYA&e=" target="_blank">/ponyorm-list</a><br>
</blockquote>
</div>
<br>
</div>
</div>
_______________________________________________<br>
ponyorm-list mailing list<br>
<a href="mailto:ponyorm-list@ponyorm.org" target="_blank">ponyorm-list@ponyorm.org</a><br>
<a href="https://urldefense.proofpoint.com/v2/url?u=https-3A__mailman-2Dmail5.webfaction.com_listinfo_ponyorm-2Dlist&d=AAIGaQ&c=4R1YgkJNMyVWjMjneTwN5tJRn8m8VqTSNCjYLg1wNX4&r=TntoeYH7lekXzpBRjXwLTkqiWTbWAvp3pHKo_kZp5qI&m=-l9d_YgpS5Br4HVerevDUPDePIdahRQvh6kua6GEKCg&s=ZTWdoePYiHrdwy3YThpUs2-mmvop7hGq2ibwteX9CYA&e=" target="_blank">https://urldefense.proofpoint.com/v2/url?u=https-3A__mailman-2Dmail5.webfaction.com_listinfo_ponyorm-2Dlist&d=AAIGaQ&c=4R1YgkJNMyVWjMjneTwN5tJRn8m8VqTSNCjYLg1wNX4&r=TntoeYH7lekXzpBRjXwLTkqiWTbWAvp3pHKo_kZp5qI&m=-l9d_YgpS5Br4HVerevDUPDePIdahRQvh6kua6GEKCg&s=ZTWdoePYiHrdwy3YThpUs2-mmvop7hGq2ibwteX9CYA&e=</a>
<br>
</blockquote>
</div>
<br>
<div>
<div style="font-family:Helvetica;font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;word-wrap:break-word">
<div style="font-family:Helvetica;font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;word-wrap:break-word">
<div style="font-family:Helvetica;font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;word-wrap:break-word">
<span style="border-collapse:separate;border-spacing:0px">
<div style="word-wrap:break-word"><span style="border-collapse:separate;font-family:Helvetica;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;border-spacing:0px;font-size:medium">
<div style="word-wrap:break-word"><span style="text-indent:0px">
<div style="word-wrap:break-word"><span style="text-indent:0px">
<div style="word-wrap:break-word"><span style="text-indent:0px">
<div style="word-wrap:break-word"><span style="text-indent:0px">
<div style="word-wrap:break-word"><span style="text-indent:0px">
<div style="word-wrap:break-word">
<div style="word-wrap:break-word">
<div style="border-collapse:separate;font-family:Helvetica;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-transform:none;white-space:normal;word-spacing:0px;border-spacing:0px;font-size:medium">
<div style="border-collapse:separate;font-family:Helvetica;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-transform:none;white-space:normal;word-spacing:0px;border-spacing:0px;font-size:medium">
---</div>
<div> </div>
<div>Arthur Goldberg
<div style="border-collapse:separate;font-family:Helvetica;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-transform:none;white-space:normal;word-spacing:0px;border-spacing:0px;font-size:medium">
Associate Professor of Psychiatry</div>
<div>Seaver Autism Center and Icahn Institute for Genomics & Multiscale Biology</div>
<div>Icahn School of Medicine at Mount Sinai</div>
<div style="border-collapse:separate;font-family:Helvetica;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-transform:none;white-space:normal;word-spacing:0px;border-spacing:0px;font-size:medium">
Seaver Center, Room ABE-33</div>
<div style="border-collapse:separate;font-family:Helvetica;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-transform:none;white-space:normal;word-spacing:0px;border-spacing:0px;font-size:medium">
212-241-4229<br>
<a href="mailto:Arthur.Goldberg@mssm.edu" target="_blank">Arthur.Goldberg@mssm.edu</a></div>
</div>
</div>
<div>Follow us on Twitter <a href="https://twitter.com/IcahnInstitute" target="_blank">@IcahnInstitute</a></div>
<div style="border-collapse:separate;font-family:Helvetica;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-transform:none;white-space:normal;word-spacing:0px;border-spacing:0px;font-size:medium">
<br>
</div>
</div>
</div>
</span></div>
</span></div>
</span></div>
</span></div>
</span></div>
</span></div>
</span></div>
</div>
</div>
<br>
<br>
</div>
<br>
</div>
</div>
</div>
</div>
<span><geneticsDBMScommon.py></span><span><geneticsSubjects.py></span></blockquote>
</div>
<br>
<div>
<div style="font-family:Helvetica;font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;word-wrap:break-word">
<div style="font-family:Helvetica;font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;word-wrap:break-word">
<div style="font-family:Helvetica;font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;word-wrap:break-word">
<span style="border-collapse:separate;border-spacing:0px">
<div style="word-wrap:break-word"><span style="border-collapse:separate;font-family:Helvetica;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;border-spacing:0px;font-size:medium">
<div style="word-wrap:break-word"><span style="text-indent:0px">
<div style="word-wrap:break-word"><span style="text-indent:0px">
<div style="word-wrap:break-word"><span style="text-indent:0px">
<div style="word-wrap:break-word"><span style="text-indent:0px">
<div style="word-wrap:break-word"><span style="text-indent:0px">
<div style="word-wrap:break-word">
<div style="word-wrap:break-word">
<div style="border-collapse:separate;font-family:Helvetica;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-transform:none;white-space:normal;word-spacing:0px;border-spacing:0px;font-size:medium">
<div style="border-collapse:separate;font-family:Helvetica;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-transform:none;white-space:normal;word-spacing:0px;border-spacing:0px;font-size:medium">
---</div>
<div> </div>
<div>Arthur Goldberg
<div style="border-collapse:separate;font-family:Helvetica;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-transform:none;white-space:normal;word-spacing:0px;border-spacing:0px;font-size:medium">
Associate Professor of Psychiatry</div>
<div>Seaver Autism Center and Icahn Institute for Genomics & Multiscale Biology</div>
<div>Icahn School of Medicine at Mount Sinai</div>
<div style="border-collapse:separate;font-family:Helvetica;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-transform:none;white-space:normal;word-spacing:0px;border-spacing:0px;font-size:medium">
Seaver Center, Room ABE-33</div>
<div style="border-collapse:separate;font-family:Helvetica;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-transform:none;white-space:normal;word-spacing:0px;border-spacing:0px;font-size:medium">
212-241-4229<br>
<a href="mailto:Arthur.Goldberg@mssm.edu" target="_blank">Arthur.Goldberg@mssm.edu</a></div>
</div>
</div>
<div>Follow us on Twitter <a href="https://twitter.com/IcahnInstitute" target="_blank">@IcahnInstitute</a></div>
<div style="border-collapse:separate;font-family:Helvetica;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-transform:none;white-space:normal;word-spacing:0px;border-spacing:0px;font-size:medium">
<br>
</div>
</div>
</div>
</span></div>
</span></div>
</span></div>
</span></div>
</span></div>
</span></div>
</span></div>
</div>
</div>
<br>
<br>
</div>
<br>
</div>
</blockquote>
</div></div></div><div><div class="h5">
<br>
<div>
<div style="color:rgb(0,0,0);font-family:Helvetica;font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;word-wrap:break-word">
<div style="color:rgb(0,0,0);font-family:Helvetica;font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;word-wrap:break-word">
<div style="color:rgb(0,0,0);font-family:Helvetica;font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;word-wrap:break-word">
<span style="border-collapse:separate;color:rgb(0,0,0);font-family:Helvetica;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;border-spacing:0px;font-size:medium">
<div style="word-wrap:break-word"><span style="border-collapse:separate;color:rgb(0,0,0);font-family:Helvetica;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;border-spacing:0px;font-size:medium">
<div style="word-wrap:break-word"><span style="text-indent:0px">
<div style="word-wrap:break-word"><span style="text-indent:0px">
<div style="word-wrap:break-word"><span style="text-indent:0px">
<div style="word-wrap:break-word"><span style="text-indent:0px">
<div style="word-wrap:break-word"><span style="text-indent:0px">
<div style="word-wrap:break-word">
<div style="word-wrap:break-word">
<div style="border-collapse:separate;color:rgb(0,0,0);font-family:Helvetica;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-transform:none;white-space:normal;word-spacing:0px;border-spacing:0px;font-size:medium">
<div style="border-collapse:separate;color:rgb(0,0,0);font-family:Helvetica;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-transform:none;white-space:normal;word-spacing:0px;border-spacing:0px;font-size:medium">
---</div>
<div> </div>
<div>Arthur Goldberg
<div style="border-collapse:separate;color:rgb(0,0,0);font-family:Helvetica;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-transform:none;white-space:normal;word-spacing:0px;border-spacing:0px;font-size:medium">
Associate Professor of Psychiatry</div>
<div>Seaver Autism Center and Icahn Institute for Genomics & Multiscale Biology</div>
<div>Icahn School of Medicine at Mount Sinai</div>
<div style="border-collapse:separate;color:rgb(0,0,0);font-family:Helvetica;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-transform:none;white-space:normal;word-spacing:0px;border-spacing:0px;font-size:medium">
Seaver Center, Room ABE-33</div>
<div style="border-collapse:separate;color:rgb(0,0,0);font-family:Helvetica;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-transform:none;white-space:normal;word-spacing:0px;border-spacing:0px;font-size:medium">
212-241-4229<br>
<a href="mailto:Arthur.Goldberg@mssm.edu" target="_blank">Arthur.Goldberg@mssm.edu</a></div>
</div>
</div>
<div>Follow us on Twitter <a href="https://twitter.com/IcahnInstitute" target="_blank">@IcahnInstitute</a></div>
<div style="border-collapse:separate;color:rgb(0,0,0);font-family:Helvetica;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-transform:none;white-space:normal;word-spacing:0px;border-spacing:0px;font-size:medium">
<br>
</div>
</div>
</div>
</span></div>
</span></div>
</span></div>
</span></div>
</span></div>
</span></div>
</span></div>
</div>
</div>
<br>
<br>
</div>
<br>
</div></div></div>
</div>
</div>

<br>_______________________________________________<br>
ponyorm-list mailing list<br>
<a href="mailto:ponyorm-list@ponyorm.org">ponyorm-list@ponyorm.org</a><br>
<a href="/ponyorm-list" target="_blank">/ponyorm-list</a><br>
<br></blockquote></div><br></div>