Comments (3)
For why it raises KeyError instead of TypeError with Python<3.12, see this: https://stackoverflow.com/questions/78427983/why-does-dictid-1-id-2-sometimes-raise-keyerror-id-instead-of-a
from tortoise-orm.
I got different errors with the following code snippet:
import uuid
from tortoise import Tortoise, fields, run_async
from tortoise.models import Model
class Faqs(Model):
id = fields.UUIDField(pk=True)
question = fields.TextField(null=True)
async def run():
await Tortoise.init(db_url="sqlite://:memory:", modules={"models": ["__main__"]})
await Tortoise.generate_schemas()
faq, _ = await Faqs.get_or_create(id="6aadafff-e0b9-497b-aeb2-65498a35b6f5")
# modify question
faq.question = "q111234"
# assign new id
faq.id = uuid.uuid4()
# update_or_create, KeyError
new_faq, created = await Faqs.update_or_create(id=faq.id, defaults=dict(faq))
print(dict(new_faq), created)
if __name__ == "__main__":
run_async(run())
ERROR is:
Traceback (most recent call last):
File "/home/wenping/github/tortoise-orm/tortoise/models.py", line 1079, in get_or_create
await cls.select_for_update().filter(**kwargs).using_db(connection).get(),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/wenping/github/tortoise-orm/tortoise/queryset.py", line 1074, in _execute
raise DoesNotExist("Object does not exist")
tortoise.exceptions.DoesNotExist: Object does not exist
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/wenping/github/tortoise-orm/examples/fastapi/run.py", line 27, in <module>
run_async(run())
File "/home/wenping/github/tortoise-orm/tortoise/__init__.py", line 688, in run_async
loop.run_until_complete(coro)
File "/usr/local/lib/python3.12/asyncio/base_events.py", line 685, in run_until_complete
return future.result()
^^^^^^^^^^^^^^^
File "/home/wenping/github/tortoise-orm/examples/fastapi/run.py", line 22, in run
new_faq, created = await Faqs.update_or_create(id=faq.id, defaults=dict(faq))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/wenping/github/tortoise-orm/tortoise/models.py", line 1129, in update_or_create
return await cls.get_or_create(defaults, db, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/wenping/github/tortoise-orm/tortoise/models.py", line 1084, in get_or_create
return await cls.create(using_db=connection, **defaults, **kwargs), True
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: tortoise.models.Model.create() got multiple values for keyword argument 'id'
from tortoise-orm.
After change the Python version to 3.10, got the KeyError:
Traceback (most recent call last):
File "/home/wenping/github/tortoise-orm/tortoise/models.py", line 1079, in get_or_create
await cls.select_for_update().filter(**kwargs).using_db(connection).get(),
File "/home/wenping/github/tortoise-orm/tortoise/queryset.py", line 1074, in _execute
raise DoesNotExist("Object does not exist")
tortoise.exceptions.DoesNotExist: Object does not exist
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/wenping/github/tortoise-orm/examples/fastapi/run.py", line 27, in <module>
run_async(run())
File "/home/wenping/github/tortoise-orm/tortoise/__init__.py", line 688, in run_async
loop.run_until_complete(coro)
File "/home/wenping/.pyenv/versions/3.10.2/lib/python3.10/asyncio/base_events.py", line 641, in run_until_complete
return future.result()
File "/home/wenping/github/tortoise-orm/examples/fastapi/run.py", line 22, in run
new_faq, created = await Faqs.update_or_create(id=faq.id, defaults=dict(faq))
File "/home/wenping/github/tortoise-orm/tortoise/models.py", line 1129, in update_or_create
return await cls.get_or_create(defaults, db, **kwargs)
File "/home/wenping/github/tortoise-orm/tortoise/models.py", line 1084, in get_or_create
return await cls.create(using_db=connection, **defaults, **kwargs), True
KeyError: 'id'
from tortoise-orm.
Related Issues (20)
- model relationship bugged HOT 8
- why are there three files for one database? HOT 1
- auto_now not working HOT 2
- Field 'DatetimeField' has error when I use '__year' or '__month'. report this:" 'int' object has no attribute 'utcoffset' " HOT 2
- Tortoise ORM integration with FastAPI lifespan ('NoneType' object is not iterable) HOT 4
- update(balance=Wallet.balance+1) how to do this? HOT 1
- Req: concurrent use of multiple databases HOT 3
- Bug: Pydantic 2.7 broke `pydantic_model_creator` HOT 7
- Occasionally during high-frequency queries, there may be differences between SQL statements and query results, leading to KeyError errors. Additionally, Command Out of Sync errors may also be reported during transactions
- QuerySet.count(): IndexError: list index out of range HOT 3
- ConnectionDoesNotExistError, connection was closed in the middle of operation
- Can not to use relation to table with unsigned pk HOT 2
- Documentation is completely broken - it points to the develop branch but says it's for 0.20.1 HOT 9
- Question - how to configure Tortoise for transparent auto-reconnect? HOT 2
- Doubts about the correctness of the result of the count() method HOT 3
- Add proper error messages and a doc page dedicated for testing HOT 3
- Support symmetrical ManyToMany relationships HOT 2
- Bulk Create without returning objects HOT 3
- OperationalError when attempting to filter by annotated field in m2m relation HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from tortoise-orm.