peewee.OperationalError: row value misused

Created on 22 Oct 2017  路  3Comments  路  Source: coleifer/peewee

Hi, I'm getting this messages when I try to get_or_create a record on db. This is the model on sqlite

class BaseModel(Model):
    class Meta:
        database = db

class Compania(BaseModel):
    name = TextField(null=False)
    url = TextField()
    country = TextField()
    state = TextField()
    city = TextField()
    procesado = BooleanField(default=False)

class Visitados(BaseModel):
    url = TextField()

class Facebook(BaseModel):
    compania = ForeignKeyField(Compania,related_name='facebooks')
    link = ForeignKeyField(Visitados, related_name='enlaces_a_facebooks')
    url = TextField()

From previous querys I have link and compania, and pass the objects, when I try to issue this command:
resp = Facebook.get_or_create(url=url_a_chequear, link=de_donde_viene, compania=que_cia)

got:

Traceback (most recent call last):
  File "/usr/lib/python3.6/site-packages/peewee.py", line 3830, in execute_sql
    cursor.execute(sql, params or ())
sqlite3.OperationalError: row value misused

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/nomar/Documents/Trabajos/Connexa/hubspot/005.py", line 254, in <module>
    main()
  File "/home/nomar/Documents/Trabajos/Connexa/hubspot/005.py", line 237, in main
    if procesa_url(url_pagina, link, compania) is not None:
  File "/home/nomar/Documents/Trabajos/Connexa/hubspot/005.py", line 158, in procesa_url
    resp = Facebook.get_or_create(url=url_a_chequear, link=de_donde_viene, compania=que_cia)
  File "/usr/lib/python3.6/site-packages/peewee.py", line 5001, in get_or_create
    return query.get(), False
  File "/usr/lib/python3.6/site-packages/peewee.py", line 3220, in get
    return next(clone.execute())
  File "/usr/lib/python3.6/site-packages/peewee.py", line 3274, in execute
    self._qr = ResultWrapper(model_class, self._execute(), query_meta)
  File "/usr/lib/python3.6/site-packages/peewee.py", line 2939, in _execute
    return self.database.execute_sql(sql, params, self.require_commit)
  File "/usr/lib/python3.6/site-packages/peewee.py", line 3837, in execute_sql
    self.commit()
  File "/usr/lib/python3.6/site-packages/peewee.py", line 3656, in __exit__
    reraise(new_type, new_type(*exc_args), traceback)
  File "/usr/lib/python3.6/site-packages/peewee.py", line 135, in reraise
    raise value.with_traceback(tb)
  File "/usr/lib/python3.6/site-packages/peewee.py", line 3830, in execute_sql
    cursor.execute(sql, params or ())
peewee.OperationalError: row value misused

Looking into the code notice this is the raw query:
<class 'modelo.Facebook'> SELECT "t1"."id", "t1"."compania_id", "t1"."link_id", "t1"."url" FROM "facebook" AS t1 WHERE ((("t1"."url" = ?) AND ("t1"."link_id" = (?, ?))) AND ("t1"."compania_id" = ?)) ['https://www.facebook.com/XXXXXXXX', 1, 0, 1]

Why ("t1"."link_id" = (?, ?)) hast two values?!?!?!

I used peewee to create tables.

Any advice?

Thanks in advance
Nomar

Most helpful comment

My guess is that the value of Link is from a previous call to get_or_create, which returns a 2-tuple of <model instance>, <bool created?>.

Can you verify whether the value of Link is a tuple?

All 3 comments

My guess is that the value of Link is from a previous call to get_or_create, which returns a 2-tuple of <model instance>, <bool created?>.

Can you verify whether the value of Link is a tuple?

Was that precisely!!! Thanks!!!

If you forget that get_or_create returns a tuple and you try to save another model using the result as a field value, you can also get an error like the following:

TypeError: int() argument must be a string, a bytes-like object or a number, not 'tuple'

(Adding this comment as Google-bait so the next person who gets this error finds the answer sooner.)

Was this page helpful?
0 / 5 - 0 ratings

Related issues

razodactyl picture razodactyl  路  3Comments

kadnan picture kadnan  路  3Comments

alexpantyukhin picture alexpantyukhin  路  5Comments

serkandaglioglu picture serkandaglioglu  路  4Comments

hanxifu picture hanxifu  路  4Comments