<div dir="ltr"><div>> cust.licenses.add(License(x=1, y=2))<br><br>I think this should works good if the `customer` attribute of the License class was defined as Optional. But since it is Required, the License constructor will raise exception here. So it is necessary to specify customer right at the moment of the license creation. But it need to be specified as an object and not as id value.<br></div><br><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Mar 27, 2015 at 3:33 PM, Matthew Bell <span dir="ltr"><<a href="mailto:matthewrobertbell@gmail.com" target="_blank">matthewrobertbell@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div><div>The way you are creating licenses is different from how I suggested it:<br><br>cust.licenses.add(License(x=1, y=2))<br><br></div>You add an instance of License to the cust.licenses set.<br><br></div>That should work.<br></div><div class=""><div class="h5"><div class="gmail_extra"><br><div class="gmail_quote">On 27 March 2015 at 11:32, Вадим Бажов <span dir="ltr"><<a href="mailto:vadim@ideco.ru" target="_blank">vadim@ideco.ru</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div text="#000000" bgcolor="#FFFFFF">
It doesn't work for me.<br>
<br>
I have a Customers entity with 'licences' field as Set which is in
relation with Licences entity which have back relation field
'customer' as Required(Customers).<br>
<br>
Hence i must supply customer's id for 'customer' field while add
licence to a customer object.<br>
<br>
I must do the following:<br>
<br>
cust = Customer(name='asd',email='<a href="mailto:asd@qwe.com" target="_blank">asd@qwe.com</a>') <- it doesn't
create id before commiting it.<br>
<br>
lic = cust.licences.add(<br>
customer=<a href="http://cust.id" target="_blank">cust.id</a>, <- required filed in DB model. related to
Customers record by PK.<br>
x=1,<br>
y=2<br>
)<br>
<br>
But newly created object has no id since it wasn't written to DB
yet.<br>
<br>
May be Pony allows child entities without Required fields linking
entity back to a parent entity, but i didn't try it.<span><br>
<br>
<div>On 25.03.2015 11:03, Matthew Bell
wrote:<br>
</div>
</span><div><div><blockquote type="cite">
<div dir="ltr">
<div>
<div>
<div>You don't need the PK to add a relation, you can do:<br>
<br>
<font face="FreeMono">cust =
Customers(name='GazMyas',city='Chelyabinsk')</font> <br>
</div>
cust.licenses.add(License(x=1, y=2))<br>
cust.licenses.add(License(x=3, y=4))<br>
<br>
</div>
So, create the customer, then loop over all licenses for that
customer, doing customer.licenses.add<br>
<br>
</div>
You can then commit after each iteration, or just once at the
end of the script, up to you.<br>
</div>
<div class="gmail_extra"><br>
<div class="gmail_quote">On 25 March 2015 at 08:28, Вадим Бажов
<span dir="ltr"><<a href="mailto:vadim@ideco.ru" target="_blank">vadim@ideco.ru</a>></span>
wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div text="#000000" bgcolor="#FFFFFF"> Hello happy pony
users and devs !<br>
<br>
I do an import from old db to a new one, driven by pony
orm. Import iterates over records of customers and their
related licences, fetched from an old DB. So we have to
fill two tables in new DB: Customers table and Licence
table with records, which have one2many relations (one
Customer can have many Licences, by PK). PK is an
autoincrementing integer in both tables.<br>
<br>
Within <b>each iteration</b> of import i need to write
one Customer record and its Licences records to new DB.
Licence records should have customer_id fields filled up
with corresponding Customer PKs. Here we have a problem:<br>
<br>
If we create an object of an entity Customers : <font face="FreeMono">cust =
Customers(name='GazMyas',city='Chelyabinsk')</font> , it
wont be recorded to a DB exactly at this moment and we
wont able to use its ID (pk of the record) to bind Licence
records to it. In other words there is no '<a href="http://cust.id" target="_blank">cust.id</a>' element at this moment.<br>
<br>
We can do a 'commit()' each time we create a Customer
object. After that '<a href="http://cust.id" target="_blank">cust.id</a>' comes
ready. But in case of monstrous imports with over 20 000
records committing every record to hdd slows down the
import process to hours. And hangs up your server hard
drive. Anyway, it's a bad practice to commit every record
walking the huge array of incoming data.<br>
<br>
So, by now, I fill up two dicts with Customers records,
incrementing their ID's manually (customer_id += 1) and
Licences records bound to this pre-calculated ID's. When
dicts are ready, I write them to a new DB walking through
them.<br>
<br>
Is there a better way to complete a data import without
filling up transition dicts and calculating autoincrement
IDs by hand ? Can I somehow use PKs of the records before
committing them to DB ?<br>
</div>
<br>
_______________________________________________<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" target="_blank">/ponyorm-list</a><br>
<br>
</blockquote>
</div>
<br>
<br clear="all">
<br>
-- <br>
<div>Regards,<br>
<br>
Matthew Bell<br>
</div>
</div>
<br>
<fieldset></fieldset>
<br>
<pre>_______________________________________________
ponyorm-list mailing list
<a href="mailto:ponyorm-list@ponyorm.org" target="_blank">ponyorm-list@ponyorm.org</a>
<a href="/ponyorm-list" target="_blank">/ponyorm-list</a>
</pre>
</blockquote>
<br>
</div></div></div>
<br>_______________________________________________<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" target="_blank">/ponyorm-list</a><br>
<br></blockquote></div><br><br clear="all"><br>-- <br><div>Regards,<br><br>Matthew Bell<br></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></div>