Missing Greenlet: Greenlet_Spawn wurde nicht aufgerufenPython

Python-Programme
Guest
 Missing Greenlet: Greenlet_Spawn wurde nicht aufgerufen

Post by Guest »

Ich versuche, die Anzahl der Zeilen in eine eins zu viele Beziehung abzustimmen. Wenn ich parant.children_count < /code> versuche, erhalte ich: < /p>

SQLALCHEMY.EXC.IssingGreenlet: Greenlet_Spawn wurde nicht genannt.
kann nicht genannt; Rufen Sie Await_only () hier an. Wurde IO an einem unerwarteten Ort versucht? p> Ich habe expire_on_commit = false hinzugefügt, aber trotzdem denselben Fehler. Wie kann ich das beheben?

Code: Select all

import asyncio
from uuid import UUID, uuid4
from sqlmodel import SQLModel, Relationship, Field
from sqlalchemy.ext.asyncio import create_async_engine, AsyncSession

class Parent(SQLModel, table=True):
id: UUID = Field(default_factory=uuid4, primary_key=True)
children: list["Child"] = Relationship(back_populates="parent")
@property
def children_count(self):
return len(self.children)

class Child(SQLModel, table=True):
id: UUID = Field(default_factory=uuid4, primary_key=True)
parent_id: UUID = Field(default=None, foreign_key=Parent.id)
parent: "Parent" = Relationship(back_populates="children")

async def main():
engine = create_async_engine("sqlite+aiosqlite://")
async with engine.begin() as conn:
await conn.run_sync(SQLModel.metadata.create_all)

async with AsyncSession(engine) as session:
parent = Parent()
session.add(parent)
await session.commit()
await session.refresh(parent)
print(parent.children_count)  # I expect 0 here, as of now this parent has no children

asyncio.run(main())

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post