Repository navigation
Closed as duplicate
Closed as duplicate
Copy link
Labels
questionFurther information is requestedFurther information is requested
Description
First Check
- I added a very descriptive title to this issue.
- I used the GitHub search to find a similar issue and didn't find it.
- I searched the SQLModel documentation, with the integrated search.
- I already searched in Google "How to X in SQLModel" and didn't find any information.
- I already read and followed all the tutorial in the docs and didn't find an answer.
- I already checked if it is not related to SQLModel but to Pydantic.
- I already checked if it is not related to SQLModel but to SQLAlchemy.
Commit to Help
- I commit to help with one of those options 👆
Example Code
from typing import Optional
from datetime import datetime
from sqlmodel import Field, SQLModel, select, func, create_engine, Session
class Item(SQLModel, table=True):
id: Optional[int] = Field(default=None, primary_key=True)
created: datetime
deleted: bool = False
category: str
version: float = 1
data: str
# Create and save records to show that the query itself is working.
item_1 = Item(created=datetime.now(), category="category_1", data="❤️ I love SQLModel.")
item_2 = Item(created=datetime.now(), category="category_1", data="❤️ I love FastAPI.", deleted=True)
item_3 = Item(created=datetime.now(), category="category_2", data="🥰 I appreciate your work on all of it!")
engine = create_engine("sqlite://")
SQLModel.metadata.create_all(engine)
with Session(engine) as session:
session.add(item_1)
session.add(item_2)
session.add(item_3)
session.commit()
# This "statement" is where the issue presents itself in PyCharm
statement = (
select(
Item.category,
func.count(Item.id),
func.total(Item.deleted).label("delete_count"),
func.min(Item.created).label("oldest_timestamp"),
func.max(Item.created).label("newest_timestamp"),
func.group_concat(Item.version).label("version_list"),
)
.distinct()
.group_by(Item.category)
)
category_metadata = session.exec(statement)
for result in category_metadata:
print(dict(result))Description
- Using the
select()function to write out a query with > 4 params. - PyCharm displays the following warning.
Unexpected argument(s) Possible callees: select(entity_0: Type[_TModel_0], entity_1: Type[_TModel_1], entity_2: Type[_TModel_2], entity_3: Type[_TModel_3], **kw) select(entity_0: Type[_TModel_0], entity_1: Type[_TModel_1], entity_2: Type[_TModel_2], entity_3: _TScalar_3, **kw) select(entity_0: Type[_TModel_0], entity_1: Type[_TModel_1], entity_2: _TScalar_2, entity_3: Type[_TModel_3], **kw) select(entity_0: Type[_TModel_0], entity_1: Type[_TModel_1], entity_2: _TScalar_2, entity_3: _TScalar_3, **kw) select(entity_0: Type[_TModel_0], entity_1: _TScalar_1, entity_2: Type[_TModel_2], entity_3: Type[_TModel_3], **kw) select(entity_0: Type[_TModel_0], entity_1: _TScalar_1, entity_2: Type[_TModel_2], entity_3: _TScalar_3, **kw) select(entity_0: Type[_TModel_0], entity_1: _TScalar_1, entity_2: _TScalar_2, entity_3: Type[_TModel_3], **kw) select(entity_0: Type[_TModel_0], entity_1: _TScalar_1, entity_2: _TScalar_2, entity_3: _TScalar_3, **kw) select(entity_0: _TScalar_0, entity_1: Type[_TModel_1], entity_2: Type[_TModel_2], entity_3: Type[_TModel_3], **kw) select(entity_0: _TScalar_0, entity_1: Type[_TModel_1], entity_2: Type[_TModel_2], entity_3: _TScalar_3, **kw) select(entity_0: _TScalar_0, entity_1: Type[_TModel_1], entity_2: _TScalar_2, entity_3: Type[_TModel_3], **kw) select(entity_0: _TScalar_0, entity_1: Type[_TModel_1], entity_2: _TScalar_2, entity_3: _TScalar_3, **kw) select(entity_0: _TScalar_0, entity_1: _TScalar_1, entity_2: Type[_TModel_2], entity_3: Type[_TModel_3], **kw) select(entity_0: _TScalar_0, entity_1: _TScalar_1, entity_2: Type[_TModel_2], entity_3: _TScalar_3, **kw) select(entity_0: _TScalar_0, entity_1: _TScalar_1, entity_2: _TScalar_2, entity_3: Type[_TModel_3], **kw) select(entity_0: _TScalar_0, entity_1: _TScalar_1, entity_2: _TScalar_2, entity_3: _TScalar_3, **kw) select(entity_0: Type[_TModel_0], entity_1: Type[_TModel_1], entity_2: Type[_TModel_2], **kw) select(entity_0: Type[_TModel_0], entity_1: Type[_TModel_1], entity_2: _TScalar_2, **kw) select(entity_0: Type[_TModel_0], entity_1: _TScalar_1, entity_2: Type[_TModel_2], **kw) select(entity_0: Type[_TModel_0], entity_1: _TScalar_1, entity_2: _TScalar_2, **kw) select(entity_0: _TScalar_0, entity_1: Type[_TModel_1], entity_2: Type[_TModel_2], **kw) select(entity_0: _TScalar_0, entity_1: Type[_TModel_1], entity_2: _TScalar_2, **kw) select(entity_0: _TScalar_0, entity_1: _TScalar_1, entity_2: Type[_TModel_2], **kw) select(entity_0: _TScalar_0, entity_1: _TScalar_1, entity_2: _TScalar_2, **kw) select(entity_0: Type[_TModel_0], entity_1: Type[_TModel_1], **kw) select(entity_0: Type[_TModel_0], entity_1: _TScalar_1, **kw) select(entity_0: _TScalar_0, entity_1: Type[_TModel_1], **kw) select(entity_0: _TScalar_0, entity_1: _TScalar_1, **kw) select(entity_0: Type[_TModel_0], **kw) select(entity_0: _TScalar_0, **kw)
- This does not impact the use of
select(), the query works as expected. - This does not show when using <= 4 params.
- This warning does not show in VSCode.
Operating System
Windows
Operating System Details
Windows = 10
PyCharm Version = 2021.2 (Community Edition)
SQLModel Version
0.0.4
Python Version
Python 3.9.7
Additional Context
Reacted by Alex Martin, Lorenzo, Chuangbo Li, chi11ax, mrh1997, Vinicius Abade, Áron Hoffmann and Or Gany
Metadata
Metadata
Assignees
Labels
questionFurther information is requestedFurther information is requested

Activity
[-]"Unexpected argument(s)" warning in PyCharm when using select() with many parameters [/-][+]`Unexpected argument(s)` warning in PyCharm when using `select()` with many parameters [/+]Cielquan commentedon May 6, 2022
I have the same issue.
I have a table with 5 foreign keys. And when I want to do a full join like below I get a mypy error. So I assume the typing is the issue here. And PyCharm uses the types too I think.
And when I use
reveal_typefromtyping_extensionsI get this:When I reduce the arguments to select I get:
When I use
selectfromsqlalchemyinstead it works with all arguments and I get:Cielquan commentedon May 6, 2022
Basically the issues lies here: https://github.com/tiangolo/sqlmodel/blob/main/sqlmodel/sql/expression.py#L140-L442
The overloads are hardcoded and end with 4 parameters. So I guess there are 3 Solutions:
_TScalar_XandType[_TModel_X]for each parameter.kiddten commentedon Jun 22, 2022
Same issue here
etash47 commentedon Jun 22, 2024
@tiangolo we're still having this issue in a ton of places in our code base, any we can resolve or merge max's fix? Would be a huge QOL improvement for us. Thank you !!
1990heidou commentedon Sep 26, 2024
Due to the fact that the 'select' parameter in the SQL model is as follows:

You can first create a list of parameters that need to be queried:

YuriiMotov commentedon Aug 27, 2025
I think this is the same as #271
Let's close this and track it here