RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / user-250534

virvaldium's questions

Martin Hope
virvaldium
Asked: 2023-09-05 05:43:37 +0000 UTC

如何检查 Pydantic 2 模型中是否存在主键

  • 5

我有一个用 Pydantic 2 编写的电路,用于验证提交的字段:

from pydantic import BaseModel

class CommandSchema(BaseModel):
    product: int
    title: str

如何检查发送的产品字段是否是产品模型中的键?这个想法是使用类似以下代码的内容:

class CommandSchema(BaseModel):
   product: int
   title: str

    @validator('product')
    def validate_product_field(cls, value):
        session = Session(bind=engine)
        if session.query(Product).filter(Product.id == value).first():
            return value
       
        raise ValueError(f"Field '{value}' already not exists in the database.")

但我使用异步连接数据库。因此,我不能等待这样的代码:

async with engine.begin() as conn:
            async_session = sessionmaker(conn, class_=AsyncSession, expire_on_commit=False)
            async with async_session() as session:
                if await session.execute(Product.select().where(Product.id == value)):
                    return value
                    
            raise ValueError(f"Field '{value}' already not exists in the database.")

因为它将在非异步方法内启动

python
  • 1 个回答
  • 26 Views
Martin Hope
virvaldium
Asked: 2020-02-20 16:10:29 +0000 UTC

Djnago ORM 从两个表中选择

  • 0

你好!我有两个模型通过 ForeignKey 相互连接

class User(models.Model):
    object = models.ForeignKey(Object, on_delete=models.CASCADE)

class Object(models.Model):
    count = FloatField()

告诉我如何为计数小于某个值的对象选择所有用户?我试过这样,但它返回一个空的查询集:

def get_queryset(self):
    ...
    return queryset.filter(object_id=object__location__distance_lt=10)
python
  • 1 个回答
  • 10 Views
Martin Hope
virvaldium
Asked: 2020-10-27 21:04:11 +0000 UTC

如何将字典传递给序列化程序

  • 0

我正在使用 django 和 django rest 框架。请告诉我,我怎样才能将对象传输到序列化器而不是从模型中,而是从常规字典中传输?

可序列化对象:

class SerializerClass:
    def __init__(self, **entries):
        self.__dict__.update(dictonary=entries['dict_example'])

exmaple = SerializerClass(dict_example={'a': 'aaaaa', 'b': 'bbbbb'})

序列化器:

class MySerializer(Serializer):
    my_list = DictField(child=CharField())

视图集:

class MyViewSet(ListModelMixin):
    http_method_names = ['get']
    queryset = exmaple.dict_example
    permission_classes = [AllowAny]
    serializer_class = MySerializer

我需要在获取请求时显示字典的内容。它目前因错误而崩溃AttributeError 'dict' object has no attribute 'model'。如果我理解正确,那么你需要定义你的 SerializerClass 模型,如果是这样,怎么做?

python
  • 1 个回答
  • 10 Views
Martin Hope
virvaldium
Asked: 2020-10-09 18:15:58 +0000 UTC

在 Django Rest 框架中禁用分页

  • 0

我已经通过settings.py设置并连接了分页请告诉我我该怎么做才能使分页不应用于某个viewSet?并返回一个对象

python
  • 1 个回答
  • 10 Views
Martin Hope
virvaldium
Asked: 2020-09-27 17:43:36 +0000 UTC

测试 Django REST API 框架

  • 0

编写功能测试

from rest_framework import status
from rest_framework.test import APITestCase

__all__ = ['OAuthTestCase']

ADDRESS_FOR_TEST = 'http://127.0.0.1:8000/api/v1/request/'


class ApiOAuthTestCase(APITestCase):

    def setUp(self):
        User.objects.create_user(username=user_name, password=user_password)

        self.my_message = {
            'grant_type': 'password',
            'username': "user_name",
            'password': "user_password",
            'client_id': "secret_ket",
            'client_secret': "clietn_id",
        }

    def test_token(self):
        response = self.client.post(ADDRESS_FOR_TEST, self.my_message)
        self.assertEqual(response.status_code, status.HTTP_201_CREATED)

通过此测试时发生错误400。你能告诉我如何访问响应的内容response吗?

тестирование
  • 1 个回答
  • 10 Views
Martin Hope
virvaldium
Asked: 2020-09-24 17:06:46 +0000 UTC

通过 RestAPI 显示数据库中的数据

  • 3

你好!我有一个 API,它通过向127.0.0.1:8000/my_api/objects/. 请告诉我在请求地址时如何显示数据库中的对象127.0.0.1:8000/my_api/objects/X。X数据库中的id对象在哪里。

序列化器看起来像这样:

class MySerializer(ModelSerializer):
    type = ChoiceField(Device.TYPE_CHOICES, required=True)
    status = BooleanField(default=True)
    created_at = DateTimeField(read_only=True)

    class Meta:
        model = Object
        fields = ('id', 'type', 'name', 'status', 'created_at')

视图看起来像这样:

class DevicesViewSet(GenericAPIView, ViewSetMixin, ListModelMixin, RetrieveModelMixin, CreateModelMixin):
    http_method_names = ['post']
    queryset = Object.objects
    serializer_class = MySerializer

但实际上,这段代码是用来实现向数据库添加新记录的功能

python
  • 2 个回答
  • 10 Views
Martin Hope
virvaldium
Asked: 2020-09-20 20:03:33 +0000 UTC

访问令牌生成

  • 1

您能告诉我如何为之前创建的应用程序生成访问令牌吗?我正在使用 oauth2 身份验证。有时我需要手动生成令牌。管理面板中的应用程序是使用以下参数创建的:

Client type:  Confidential
Authorization grant type:  Resource owner password-based

如何创建知道此应用程序 ID 的访问令牌?

django-rest-framework
  • 1 个回答
  • 10 Views
Martin Hope
virvaldium
Asked: 2020-09-14 04:15:06 +0000 UTC

允许未经用户授权的发布请求

  • 0

你好!在 Django REST Framework 的帮助下,我提出了一个响应用户请求的服务。但他只有在用户已经注册时才会发送答案,例如,通过标准管理面板。相对而言,只有当用户端有 cookie 时,答案才会出现。请告诉我,为什么会这样?以及如何做到这一点,以便任何客户都可以提出请求并接收答案?

python
  • 1 个回答
  • 10 Views
Martin Hope
virvaldium
Asked: 2020-09-13 22:38:33 +0000 UTC

在 DRF 中禁用映射

  • 1

你好!我有一个视图模型:

class MyModels(models.Model):
    name = CharhField(max_lenght=100)
    address = CharField(max_lenght=100)

我有一个这样的序列化程序:

class MySerializer(ModelSerializer):
      class Meta:
          model = MyModel
          fields = ('name', 'address', 'code')

      name = CharhField(max_lenght=100)
      address = CharField(max_lenght=100)
      code = CharField(max_lenght=100)

也就是说,我的序列化程序包含一个附加字段。因此,事实证明“设置”:

class MyViewSet(CreateModelMixin, ListModelMixin):
    http_method_names = ['post']
    queryset = MyModels.objects
    serializer_class = UserSerializer

保存结果时,它会因以下错误而崩溃:

AttributeError: Got AttributeError when attempting to get a value for field `code` on serializer `MySerializer`.
app_1       | The serializer field might be named incorrectly and not match any attribute or key on the `MyModel` instance.
app_1       | Original exception text was: 'MyModel' object has no attribute 'code'.

此错误发生在生成 MyViewSet 的 Respone 中。请告诉我,是否有可能以某种方式从验证数据中删除此“代码”?

python
  • 1 个回答
  • 10 Views
Martin Hope
virvaldium
Asked: 2020-09-10 23:01:10 +0000 UTC

DRF 中的 UPDATE 字段

  • 0

你好!我有一个形式的序列化程序:

class MySerializer(ModelSerializer):
    class Meta:
        model = MyModel
        fields = ('address',)

有一个视图集:

class MyViewSet(GenericViewSet, CreateModelMixin, ListModelMixin):
    http_method_names = ['post']
    queryset = MyModel.objects
    serializer_class = MySerializer

请告诉我,当接收到 POST 请求时,是否有可能以某种方式更改数据库中的任何现有行?也就是说,没有实际调用 MyViewSet().create() 方法。

python
  • 1 个回答
  • 10 Views
Martin Hope
virvaldium
Asked: 2020-09-08 16:43:47 +0000 UTC

在 DRF 中添加和显示字段

  • 1

你好!我有一个视图模型:

class MyModel(models.Model):
   name = models.CharField(name="name", max_length=128)
   address = models.CharField(name="address", max_length=128)
   code = models.CharField(name="code", max_length=10)
   created_time = models.TimeField(name="created_time")

有一个序列化器:

class MySerializer(ModelSerializer):
    class Meta:
        model = MyModel
        fields = ('address',)

有一个 viewSet 用于创建指定模型的条目:

class MyViewSet(GenericViewSet, CreateModelMixin, ListModelMixin):
    http_method_names = ['post']
    queryset = MyModel.objects
    serializer_class = MySerializer

我需要确保在发送包含地址字段的 POST 请求时,会在数据库中创建一个条目。但是名称、代码、created_time 字段是在我这边设置的,具体取决于地址的内容。在这种情况下,对客户端的响应应该会收到我生成的代码字段。您能告诉我如何正确实施吗?如果可能,请提供代码示例。

PS我没有与DRF合作,我代表它非常弱。如果我正确理解了工作的逻辑,那么在路由之后请求到达 MyViewSet,MyViewSet 将它们传递给 MySerializer。MySerializer - 将数据从 JSON 转换为 DRF 对象。也就是说,创建我的所有字段的逻辑将在 MyViewSet 一侧

python-3.x
  • 1 个回答
  • 10 Views
Martin Hope
virvaldium
Asked: 2020-08-09 17:10:11 +0000 UTC

线程安全的单例实现

  • 4

你好!提示,请注意我对单例的实现。我按照pep-0318的建议实现它:总的来说,代码如下所示:

def singleton(cls):
    instance = {}

    def get_instance():
        if cls not in instance:
            instance[cls] = cls()
        return instance[cls]
    return get_instance()

@singleton
class MyClass:
      ******

我不知道为什么我的代码有效。我实验了10个线程,调用这个类的同一个方法,这个方法耗时很长(4-5秒的实时),但是锁不能被调用。这个实现线程安全吗?如果是,为什么?

python
  • 2 个回答
  • 10 Views
Martin Hope
virvaldium
Asked: 2020-07-13 14:21:34 +0000 UTC

日志记录和多线程

  • 0

我正在标准线程模块上制作多线程服务器。该服务器上的每个线程都从任务队列中读取并运行一个如下所示的处理程序类:

class Worker:
    def __init__(self, parameters):
        ***********
        log_name = 'name.log'  # тут задается имя лога в зависимости от обработчика
        logging.basicConfig(format=u'%(filename)s[LINE:%(lineno)d]# %(levelname)-8s [%(asctime)s]  %(message)s', filename=log_name, level=log_level)
        ***********

    def start_operation(self):
        ***********
        logging.info(u'сообщение')
        ***********

并保留日志......但只有一个。不是每个线程都是独立的,而是所有线程共有的。此外,日志的文件名由最先启动并执行 logging.basicConfig 行的线程设置。

显然,我对日志记录模块不了解。可能是什么问题呢?

python-3.x
  • 1 个回答
  • 10 Views
Martin Hope
virvaldium
Asked: 2020-06-05 20:55:11 +0000 UTC

单例的正确实现

  • 1

你好!请帮助设计应用程序。我正在用 Python3(使用线程)编写一个多线程应用程序。作为 ORM,我使用 SQLAlchemy。在此应用程序中,多个线程连接到数据库。连接数据库是通过单例实现的。这个实现中的独行者是一个修饰如下的类:

def singleton(cls):
    instance = {}

    def get_instance():
        if cls not in instance:
            instance[cls] = cls()
        return instance[cls]
    return get_instance()

@singleton
class Connector:
    def __init__(self):
        db = "параметры подключения"
        self.engine = create_engine(db)
        Session = sessionmaker(bind=self.engine)
        self.session = Session()

    def get_connection(self):    # вызывается когда нужен доступ к базе
        return self.session

请告诉我,这个实现中会出现什么问题?在不同的线程中尝试使用Connect类的方法会不会发生阻塞?(理论上,对类的实例施加锁定应该会产生 GIL)。目前,我定期在线程工作中遇到错误:

sqlalchemy.exc.ResourceClosedError:此连接已关闭

python
  • 2 个回答
  • 10 Views
Martin Hope
virvaldium
Asked: 2020-05-26 20:41:04 +0000 UTC

在 SQLAlchemy 表中添加和修改记录

  • 1

你好!我使用 SQLAlchemy 使用数据库。创建了这个类:

Base = declarative_base()

class Pool(Base):
    """
    Управляет таблицей пулов. Создает, удаляет, возвращает список всех пулов в системе
    """
    __tablename__ = 'tbl_pool'
    id = Column(Integer, primary_key=True, autoincrement=True)
    name = Column(String(255), unique=True, nullable=False, default='default')
    description = Column(String(512))

    def __init__(self):
        self.session = BaseConnector.get_connection() # тут я получаю параметры подключения к базе

    def add_new_pool(self, pool_name='default_pool', pool_description="No description"):
        """
        Создает новую запись в таблице
        """
        self.name = pool_name
        self.description = pool_description
        try:
            self.session.add(self)
            self.session.commit()
        except IntegrityError:
            self.session.rollback()
            return 'Error! Poll exists'
        return 'Success! Poll created'

    def get_pool_list(self):
        """
        Получает список всех элементов в таблице
        """
        try:
            query_pool_list = self.session.query(Pool)
        except SQLAlchemyError:
            self.session.rollback()
            return {'error': 'error in query \"get_pool_list\"'}
        pool_dict = {}
        for pool in query_pool_list:
            pool_dict[pool.name] = pool.description
        return pool_dict

description请告诉我,根据id将作为参数(请求示例:)传递的更改字段的方法应该是UPDATE 'tbl_pool' SET description='new_description' WHERE id=10什么样的?使选择看起来像什么的方法(示例查询:)SELECT description FROM 'tbl_pool' WHERE id=10?

python
  • 1 个回答
  • 10 Views

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5