You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
when using ForeignKeyField in peewee_async the code fails with an error. It says that you need to use .set_allow_sync(), but I need the asynchronous option
при использовании ForeignKeyField в peewee_async код завершается ошибкой. Написано что нужно использовать .set_allow_sync(), но мне нужен асинхронный вариант
example code on peewee where everything works fine:
пример кода на peewee где все работает исправно:
from peewee import *
db = SqliteDatabase(':memory:')
class BaseModel(Model):
class Meta:
database = db
class Favorite(BaseModel):
text = TextField()
class Tweet(BaseModel):
user_id = IntegerField()
name = TextField()
favorite = ForeignKeyField(Favorite, backref='favorites')
db.create_tables([
Favorite,
Tweet
])
info_favorite = Favorite.create(text="text uwu")
Tweet.create(user_id=11, favorite=info_favorite, name="Durov")
info = Tweet.get(user_id=11)
print(info.name) # Durov
print(info.favorite.text) # text uwu
example code for peewee-async where this functionality does not work:
пример кода на peewee-async где не работает данный функционал:
import asyncio
from peewee import *
from peewee_async import *
db = PooledMySQLDatabase(...)
class BaseModel(AioModel):
class Meta:
database = db
class Favorite(AioModel):
text = TextField()
class Tweet(AioModel):
user_id = IntegerField()
name = TextField()
favorite = ForeignKeyField(Favorite, backref='favorites')
db.create_tables([
Favorite,
Tweet
])
db.set_allow_sync(False)
async def main():
info_favorite = await Favorite.aio_create(text="text uwu")
await Tweet.aio_create(user_id=11, favorite=info_favorite, name="Durov")
info = await Tweet.aio_get(user_id=11)
print(info.name) # work
print(info.favorite.text) # error
>
assert self._allow_sync, (
^^^^^^^^^^^^^^^^
AssertionError: Error, sync query is not allowed! Call the `.set_allow_sync()` or use the `.allow_sync()` context manager.
asyncio.run(main())
Maybe I'm doing something wrong, I don't exclude this option
The text was updated successfully, but these errors were encountered:
Асинхронного варианта для ForeignKeyField на данный моент нет. А если его добавлять, то нужно будет обязательно добавлять ключевое слово await:
text= (awaitinfo.favorite).text
Скорей всего это приведет к тому, что все будут забывать добавлять await и будут получать ошибку "У корутины нет аттрибута text". На мой взгляд лучше использовать join-ы, либо можно самому написать запрос
when using ForeignKeyField in peewee_async the code fails with an error. It says that you need to use .set_allow_sync(), but I need the asynchronous option
при использовании ForeignKeyField в peewee_async код завершается ошибкой. Написано что нужно использовать .set_allow_sync(), но мне нужен асинхронный вариант
example code on peewee where everything works fine:
пример кода на peewee где все работает исправно:
example code for peewee-async where this functionality does not work:
пример кода на peewee-async где не работает данный функционал:
Maybe I'm doing something wrong, I don't exclude this option
The text was updated successfully, but these errors were encountered: