<div dir="ltr"><span style="font-size:12.8px">> Is it not possible to let the database drive the structure and </span><span style="font-size:12.8px">dynamically create the entity classes somehow based on introspection </span><span class="gmail-im" style="font-size:12.8px">of the database?</span><br><br>Yes. At this moment, Pony does not have an official way to introspect a database and reconstruct entities from the database. Typically, a database does not contain enough information to fully restore entity classes anyway.<br><br>> <span style="font-size:12.8px">So as of today, I'd have to lose my data to add/remove fields?<br></span><br>During the development, it is often convenient to have a function which populate database by some test data. The benefit of such a function is that you can play with database, change some information, and then restore the database to a known initial state. You can see such a function in examples like pony.orm.examples.university1.<br><br>If you have such a function, then you can easily change entities, make corresponding change to the function with initial data, and re-create the database.<br><br>If your database content cannot be re-generated, at this moment you need to write ALTER TABLE command manually. Typically they are simple. For example, if you want to change the type of attribute from `int` to `str`, the command for MySQL will look like:<br><br>    ALTER TABLE my_table CHANGE my_column my_column VARCHAR(20)<br><br>When we release the migration tool, it will generate and run ALTER TABLE command automatically, basing on changes in entity classes (it will not introspect the database, because this is less reliable)<br><br><br>Regards,<br>Alexander<br><br></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Oct 3, 2017 at 1:10 AM, Tobiah <span dir="ltr"><<a href="mailto:toby@tobiah.org" target="_blank">toby@tobiah.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">So as of today, I'd have to lose my data to add/remove fields?<br>
<br>
Is it not possible to let the database drive the structure and<br>
dynamically create the entity classes somehow based on introspection<span class=""><br>
of the database?<br>
<br>
Thanks,<br>
<br>
Tobiah<br>
<br></span><span class="">
On 10/02/2017 02:45 PM, Alexander Kozlovsky wrote:<br>
</span><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">
Hi Tobiah!<br>
<br>
Soon we will release a migration tool which should help with updating the database schema.<br>
<br>
Until this, during the early stage of development you can drop all tables and re-create them:<br>
<br>
     # update_db.py<br>
<br>
     from models import db<br>
     from settings import db_params<br>
     from initial_data import populate_database<br>
<br>
     db.bind(**db_params)<br>
     db.generate_mapping(check_tabl<wbr>es=False)<br>
     db.drop_all_tables(with_all_da<wbr>ta=True)<br>
     db.create_tables()<br>
     populate_database()<br>
<br>
<br>
Best regards,<br>
Alexander Kozlovsky<br>
<br>
<br></span><span class="">
On Tue, Oct 3, 2017 at 12:05 AM, Tobiah <<a href="mailto:toby@tobiah.org" target="_blank">toby@tobiah.org</a> <mailto:<a href="mailto:toby@tobiah.org" target="_blank">toby@tobiah.org</a>>> wrote:<br>
<br>
    I'm new to ORMs in general.  I used the online tool to<br>
    create a set of entities and used the resulting python<br>
    class set in a python program to automatically generate<br>
    a mysql database.<br>
<br>
    Now I've decided that I want to change one of my 'int' types to<br>
    a 'str'.  I did this in the corresponding class and re-ran<br>
    the program, but my database field type was not updated.<br>
    How does one normally handle a changing schema during<br>
    development?  Do you have to puff the database and rebuild<br>
    every time there is a change?<br>
<br>
    Also, does anyone ever somehow generate the Pony classes at<br>
    runtime based on introspection of the database?<br>
<br>
<br>
    Thanks,<br>
<br>
<br>
    Tobiah<br>
    ______________________________<wbr>_________________<br>
    ponyorm-list mailing list<br></span>
    <a href="mailto:ponyorm-list@ponyorm.org" target="_blank">ponyorm-list@ponyorm.org</a> <mailto:<a href="mailto:ponyorm-list@ponyorm.org" target="_blank">ponyorm-list@ponyorm.c<wbr>om</a>><br>
    <a href="/ponyorm-list" rel="noreferrer" target="_blank">https://mailman-mail5.webfacti<wbr>on.com/listinfo/ponyorm-list</a><br>
    <<a href="/ponyorm-list" rel="noreferrer" target="_blank">https://mailman-mail5.webfact<wbr>ion.com/listinfo/ponyorm-list</a>><span class=""><br>
<br>
<br>
<br>
<br>
______________________________<wbr>_________________<br>
ponyorm-list mailing list<br>
<a href="mailto:ponyorm-list@ponyorm.org" target="_blank">ponyorm-list@ponyorm.org</a><br>
<a href="/ponyorm-list" rel="noreferrer" target="_blank">https://mailman-mail5.webfacti<wbr>on.com/listinfo/ponyorm-list</a><br>
<br>
</span></blockquote><div class="HOEnZb"><div class="h5">
______________________________<wbr>_________________<br>
ponyorm-list mailing list<br>
<a href="mailto:ponyorm-list@ponyorm.org" target="_blank">ponyorm-list@ponyorm.org</a><br>
<a href="/ponyorm-list" rel="noreferrer" target="_blank">https://mailman-mail5.webfacti<wbr>on.com/listinfo/ponyorm-list</a><br>
</div></div></blockquote></div><br></div>