[PonyORM-list] Couple of questions

Alexey Malashkevich alexeymalashkevich at gmail.com
Thu Jun 19 14:24:53 UTC 2014


Hi Arthur,

1. The method which you've used - db.get_connection().executescript() is
specific for SQLite only.
You need to use the method db.execute() which works for all databases:
http://doc.ponyorm.com/database.html#execute
Also you can use methods for dropping the database tables:
http://doc.ponyorm.com/database.html#drop_table
http://doc.ponyorm.com/database.html#drop_all_tables

2. The official way to get all entity attributes is getting the _attrs_
attribute from the entity class:

    MyEntity._attrs_

It returns the list of all the entity attributes. You can iterate over this
list and examine the attribute properties. For example, this is how you can
print all attribute names which are not collections (collection means
one-to-many relationship attribute):

    for attr in MyEntity._attrs_:
        if not attr.is_collection:
            print attr.name

Below you can see a couple of functions for getting attributes:

def get_all_attrs(entity_cls):
    return [ attr for attr in entity_cls._attrs_ ]

def get_attrs_with_columns(entity_cls):
    return [ attr for attr in entity_cls._attrs_with_columns_ ]

def get_collection_attrs(entity_cls):
    return [ attr for attr in entity_cls._attrs_ if attr.is_collection ]

def get_all_attr_names(entity_cls):
    return [ attr.name for attr in entity_cls._attrs_ ]

Please let us know if you have further questions.

Regards,
Alexey


On Thu, Jun 19, 2014 at 3:13 AM, Goldberg, Arthur P <
arthur.p.goldberg at mssm.edu> wrote:

>  Pony's nifty -- thanks.
>
>  Some questions:
>
>  1. Direct SQL. Suppose I want to drop a table. I thought that this would
> work because executescript() appears in examples
>
>         sql = "DROP TABLE IF EXISTS %s;" % tableName
>         db.get_connection().executescript(sql)
>
>
>  2. Entity class fields. Suppose I have
>
>   class Subject(db.Entity):
>     FamilyID = Optional(str)
>     IndivID = PrimaryKey(str)
>     PatID = Optional(str, default='0')
>     MatID = Optional(str, default='0')
>     Sex = Required(str)
>     Pheno = Required(int)
>     SampleSet = Required(str)
>     variants = Set(Variant)
>
> className = 'Subject'
>
> self.slqobj = globals()[ className ]
>
>   # I can get all fields in Subject with
> self.slqobj._attrs_
>
>
>  but is there an official method?
>
>  Thanks
> Arthur
>
>            ---
>
> Arthur Goldberg
> Associate Professor of Psychiatry
> Seaver Autism Center and Icahn Institute for Genomics & Multiscale Biology
> Icahn School of Medicine at Mount Sinai
>  Seaver Center, Room ABE-33
>  212-241-4229
> Arthur.Goldberg at mssm.edu
>  Follow us on Twitter @IcahnInstitute <https://twitter.com/IcahnInstitute>
>
>
>
>
>
> _______________________________________________
> ponyorm-list mailing list
> ponyorm-list at ponyorm.com
> /ponyorm-list
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: </ponyorm-list/attachments/20140619/f50d611c/attachment.html>


More information about the ponyorm-list mailing list