Skip to content

Repeated columns of the same class fails #75

Description

@kestral1

What does happen

from pydbantic import DataBaseModel
import asyncio
from pydbantic import Database

class ClassA(DataBaseModel):
    a_attribute: int

class ClassB(DataBaseModel):
    b_attribute: int
    b_foreign_key_1: ClassA = None
    b_foreign_key_2: ClassA = None


async def main():
    db = await Database.create(
        'sqlite:///test.db',
        tables=[
            ClassA,
            ClassB,
        ]
    )

    a_1 = await ClassA.create(a_attribute=1)
    a_2 = await ClassA.create(a_attribute=2)

    class_b = ClassB(
        b_attribute=1,
        b_foreign_key_1 = a_1,
        b_foreign_key_2 = a_2,
    )

    await class_b.save()

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

This returns an error

sqlite3.OperationalError: ambiguous column name: ClassB_to_ClassA.ClassB_b_attribute

What should happen

A possible solution is: PyDBantic saves relationship tables with the column name as well. That way instead of a single ClassB_to_ClassA column, we generate ClassB_to_ClassA_b_foreign_key_1, and ClassB_to_ClassA_b_foreign_key_2.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions