ON CONFLICT DO UPDATE
Hi,
Sorry for asking question again.
I would like to know if there's a workaround for this. I need to insert
Student Balance data into a table. The source data have duplicate values
for student_id, school_id and campus_name. My StudentBalance model in Djano
have Class Meta of:
class Meta:
unique_together = (
"school",
"student_id",
"campus_name"
)
Searched online and found this magical tool called ON CONFLICT DO UPDATE. I
played around with it, made it work but there's a problem. The balance data
is not being updated which is because it's not in class Meta with
unique_together. I would like to know if there's a way to update the data
in Student Balance column without adding it to the class Meta?
Thanks,
J
On 05/09/2018 07:04 PM, tango ward wrote:
Hi,
Sorry for asking question again.
I would like to know if there's a workaround for this. I need to insert
Student Balance data into a table. The source data have duplicate values
for student_id, school_id and campus_name. My StudentBalance model in
Djano have Class Meta of:class Meta:
unique_together = (
"school",
"student_id",
"campus_name"
)Searched online and found this magical tool called ON CONFLICT DO
UPDATE. I played around with it, made it work but there's a problem. The
balance data is not being updated which is because it's not in class
Meta with unique_together. I would like to know if there's a way to
update the data in Student Balance column without adding it to the class
Meta?
I doubt that Meta has anything to do with the balance not being updated.
What the Meta does is set up a UNIQUE index over the school, student_id
and campus_name columns. I am going to say the issue is with ON CONFLICT
DO UPDATE clause you create on the table. To help solve this we need:
1) The schema of the table StudentBalance points to.
2) The ON CONFLICT DO UPDATE clause you created on the table.
Thanks,
J
--
Adrian Klaver
adrian.klaver@aklaver.com
Sorry, I modified the school_system_id in CONFLICT CLAUSE.
On Thu, May 10, 2018 at 12:07 PM, Adrian Klaver <adrian.klaver@aklaver.com>
wrote:
Show quoted text
On 05/09/2018 07:04 PM, tango ward wrote:
Hi,
Sorry for asking question again.
I would like to know if there's a workaround for this. I need to insert
Student Balance data into a table. The source data have duplicate values
for student_id, school_id and campus_name. My StudentBalance model in Djano
have Class Meta of:class Meta:
unique_together = (
"school",
"student_id",
"campus_name"
)Searched online and found this magical tool called ON CONFLICT DO UPDATE.
I played around with it, made it work but there's a problem. The balance
data is not being updated which is because it's not in class Meta with
unique_together. I would like to know if there's a way to update the data
in Student Balance column without adding it to the class Meta?I doubt that Meta has anything to do with the balance not being updated.
What the Meta does is set up a UNIQUE index over the school, student_id and
campus_name columns. I am going to say the issue is with ON CONFLICT DO
UPDATE clause you create on the table. To help solve this we need:1) The schema of the table StudentBalance points to.
2) The ON CONFLICT DO UPDATE clause you created on the table.
Thanks,
J--
Adrian Klaver
adrian.klaver@aklaver.com
Sorry Sir Adrian, updating the code.
for row in cur_tdc:
print row['studentnumber'], row['firstname'], row['lastname'],
row['currentbalance']
cur_phil.execute("""
INSERT INTO recipients_studentbalance(
created, modified, student_id,
first_name, middle_name,
last_name, campus_name,
year_level, section,
balance, balance_as_of,
school_system_id
)
VALUES (current_timestamp,
current_timestamp,
%s, %s, %s, %s, %s,
%s, %s, %s, current_date,
(SELECT id
FROM education_schoolsystem
WHERE name='My Test School.')
)
ON CONFLICT (school_system_id,
student_id,
campus_name
) DO UPDATE
SET school_system_id =
excluded.school_system_id,
student_id = excluded.student_id,
campus_name = excluded.campus_name
""", (row['studentnumber'], row['firstname'],
row['middlename'], row['lastname'],
'My Test Schol.',
row['yearlevel'], row['section'],
row['currentbalance']))
On Thu, May 10, 2018 at 12:07 PM, Adrian Klaver <adrian.klaver@aklaver.com>
wrote:
Show quoted text
On 05/09/2018 07:04 PM, tango ward wrote:
Hi,
Sorry for asking question again.
I would like to know if there's a workaround for this. I need to insert
Student Balance data into a table. The source data have duplicate values
for student_id, school_id and campus_name. My StudentBalance model in Djano
have Class Meta of:class Meta:
unique_together = (
"school",
"student_id",
"campus_name"
)Searched online and found this magical tool called ON CONFLICT DO UPDATE.
I played around with it, made it work but there's a problem. The balance
data is not being updated which is because it's not in class Meta with
unique_together. I would like to know if there's a way to update the data
in Student Balance column without adding it to the class Meta?I doubt that Meta has anything to do with the balance not being updated.
What the Meta does is set up a UNIQUE index over the school, student_id and
campus_name columns. I am going to say the issue is with ON CONFLICT DO
UPDATE clause you create on the table. To help solve this we need:1) The schema of the table StudentBalance points to.
2) The ON CONFLICT DO UPDATE clause you created on the table.
Thanks,
J--
Adrian Klaver
adrian.klaver@aklaver.com
Okay, I think I manage to solve it by adding balance = excluded.balance
inside the parenthesis of ON CONFLICT clause.
On Thu, May 10, 2018 at 1:13 PM, tango ward <tangoward15@gmail.com> wrote:
Show quoted text
Sorry Sir Adrian, updating the code.
for row in cur_tdc:
print row['studentnumber'], row['firstname'], row['lastname'],
row['currentbalance']
cur_phil.execute("""
INSERT INTO recipients_studentbalance(
created, modified, student_id,
first_name, middle_name,
last_name, campus_name,
year_level, section,
balance, balance_as_of,
school_system_id
)
VALUES (current_timestamp,
current_timestamp,
%s, %s, %s, %s, %s,
%s, %s, %s, current_date,
(SELECT id
FROM education_schoolsystem
WHERE name='My Test School.')
)
ON CONFLICT (school_system_id,
student_id,
campus_name
) DO UPDATE
SET school_system_id =
excluded.school_system_id,
student_id = excluded.student_id,
campus_name = excluded.campus_name
""", (row['studentnumber'], row['firstname'],
row['middlename'], row['lastname'],
'My Test Schol.',
row['yearlevel'], row['section'],
row['currentbalance']))On Thu, May 10, 2018 at 12:07 PM, Adrian Klaver <adrian.klaver@aklaver.com
wrote:
On 05/09/2018 07:04 PM, tango ward wrote:
Hi,
Sorry for asking question again.
I would like to know if there's a workaround for this. I need to insert
Student Balance data into a table. The source data have duplicate values
for student_id, school_id and campus_name. My StudentBalance model in Djano
have Class Meta of:class Meta:
unique_together = (
"school",
"student_id",
"campus_name"
)Searched online and found this magical tool called ON CONFLICT DO
UPDATE. I played around with it, made it work but there's a problem. The
balance data is not being updated which is because it's not in class Meta
with unique_together. I would like to know if there's a way to update the
data in Student Balance column without adding it to the class Meta?I doubt that Meta has anything to do with the balance not being updated.
What the Meta does is set up a UNIQUE index over the school, student_id and
campus_name columns. I am going to say the issue is with ON CONFLICT DO
UPDATE clause you create on the table. To help solve this we need:1) The schema of the table StudentBalance points to.
2) The ON CONFLICT DO UPDATE clause you created on the table.
Thanks,
J--
Adrian Klaver
adrian.klaver@aklaver.com
On 10 May 2018, at 7:13, tango ward <tangoward15@gmail.com> wrote:
ON CONFLICT (school_system_id,
student_id,
campus_name
) DO UPDATE
SET school_system_id = excluded.school_system_id,
student_id = excluded.student_id,
campus_name = excluded.campus_name
I'm pretty sure this ought to read:
ON CONFLICT (school_system_id, student_id, campus_name)
DO
UPDATE SET modified = EXCLUDED.modified,
balance = EXCLUDED.balance,
balance_as_of = EXCLUDED.balance_as_of
Instead, you were re-assigning the keys (school_system_id, student_id, campus_name) to the same values again.
Alban Hertroys
--
If you can't see the forest for the trees,
cut the trees and you'll find there is no forest.
Yes, that's what I figured out eventually. I thought, only the columns that
I declared inside the ON CONFLICT() parenthesis can be called in SET. My
bad.
On Thu, May 10, 2018 at 5:57 PM, Alban Hertroys <haramrae@gmail.com> wrote:
Show quoted text
On 10 May 2018, at 7:13, tango ward <tangoward15@gmail.com> wrote:
ON CONFLICT (school_system_id,
student_id,
campus_name
) DO UPDATE
SET school_system_id =excluded.school_system_id,
student_id = excluded.student_id,
campus_name = excluded.campus_nameI'm pretty sure this ought to read:
ON CONFLICT (school_system_id, student_id, campus_name)
DO
UPDATE SET modified = EXCLUDED.modified,
balance = EXCLUDED.balance,
balance_as_of = EXCLUDED.balance_as_ofInstead, you were re-assigning the keys (school_system_id, student_id,
campus_name) to the same values again.Alban Hertroys
--
If you can't see the forest for the trees,
cut the trees and you'll find there is no forest.
On 05/09/2018 09:50 PM, tango ward wrote:
Ccing list.
Hi,
this is the my ON CONFLICT CODE
ON CONFLICT (school_system_id,
student_id,
campus_name
) DO UPDATE
SET school_system_id =
excluded.school_system_id,
student_id = excluded.student_id,
campus_name = excluded.campus_nameThese are the fields that shows on error when I hadn't implemented the
ON CONFLICT. These are the duplicate fields.
--
Adrian Klaver
adrian.klaver@aklaver.com
Import Notes
Reply to msg id not found: CAA6wQLLSjO0Hy_fkgzu1Ya89gaitvzxDHPQxdyU=n=6W8X3Eww@mail.gmail.com