这是indexloc提供的服务,不要输入任何密码
Skip to content

Int enum is not passed as int #1385

@failable

Description

@failable

Describe the bug

The below code is modified from here. The translated query is

SELECT artists_v20.id AS id, artists_v20.name AS name, artists_v20.country AS country 
FROM artists_v20 
WHERE artists_v20.name = 'Jane Doe' AND artists_v20.country = 'UK' ORDER BY artists_v20.id 

The int num is not passed as int

import asyncio
import os
from enum import Enum

import databases
import ormar
import sqlalchemy

database_url = os.environ["DATABASE_URL"]

database = databases.Database(url=database_url)
metadata = sqlalchemy.MetaData()


class Country(int, Enum):
    UK = 1
    US = 2
    VIETNAM = 3
    COLOMBIA = 4


class ArtistV20(ormar.Model):
    ormar_config = ormar.OrmarConfig(
        database=database,
        metadata=metadata,
        tablename="artists_v20",
    )

    id: int = ormar.Integer(primary_key=True)
    name: str = ormar.String(max_length=100)
    country: Country = ormar.Enum(enum_class=Country)


async def main():
    if not database.is_connected:
        await database.connect()

    engine = sqlalchemy.create_engine(database_url)
    metadata.create_all(engine)

    await ArtistV20.objects.all(name="Jane Doe", country=Country.UK)

    if database.is_connected:
        await database.disconnect()


if __name__ == "__main__":
    asyncio.run(main())

Expected behavior
The country column has int type in the database, so I expect the query will using int value 1 instead of 'UK'.

Versions (please complete the following information):

  • Database backend used: mysql Ver 8.3.0 for macos14.2 on x86_64 (Homebrew)
  • Python version: 3.10.11
  • ormar version: ormar==0.20.1
  • pydantic version: pydantic==2.5.3

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions