小编Jee*_*tel的帖子

无法为 Django 和 Mysql 启动 docker 构建

我正在使用 Djnago 和 MySql 构建一个应用程序。我想使用 docker 来部署我的应用程序。我准备了一个requirement.txt,docker-compose.yml和一个Dockerfile

docker-compose.yml

version: "3"

services:
  law-application:
    restart: always
    build:
      context: .
    ports:
      - "8000:8000"
    volumes:
      - ./app:/app
    command: >
      sh -c "python manage.py runserver 0.0.0.0:8000"
    depends_on:
      - mysql_db
  mysql_db:
    image: mysql:latest
    command: mysqld --default-authentication-plugin=mysql_native_password
    volumes:
      - "./mysql:/var/lib/mysql"
    ports:
      - "3306:3306"
    restart: always
    environment:
      - MYSQL_ROOT_PASSWORD=root
      - MYSQL_DATABASE=root
      - MYSQL_USER=root
      - MYSQL_PASSWORD=root
Run Code Online (Sandbox Code Playgroud)

要求.txt

django>=2.1.3,<2.2.0
djangorestframework==3.11.0
mysqlclient==1.4.6

Run Code Online (Sandbox Code Playgroud)

文件

FROM python:3.7-alpine
MAINTAINER Intersources Inc.

ENV PYTHONUNBUFFERED 1

COPY ./requirements.txt /requirements.txt
RUN pip …
Run Code Online (Sandbox Code Playgroud)

python mysql django docker docker-compose

6
推荐指数
1
解决办法
1867
查看次数

Pandas to_sql 使索引唯一

我已经阅读了有关不向数据库添加重复记录的 Pandas to_sql 解决方案。我正在处理日志的 csv 文件,每次我上传一个新的日志文件时,我都会读取数据并使用 Pandas 创建一个新的数据框进行一些更改。然后我执行to_sql('Logs',con = db.engine, if_exists = 'append', index=True). 随着if_exists arg i 确保每个时间从新文件中的新创建数据帧被附加到现有的数据库。问题是它不断添加重复值。我想确保如果一个已经上传的文件被错误地再次上传,它不会被附加到数据库中。我想在创建数据库时直接尝试执行此操作,而无需找到解决方法,例如检查之前是否使用过文件名。

我正在使用flask-sqlalchemy。

谢谢你。

unique primary-key pandas flask-sqlalchemy pandas-to-sql

5
推荐指数
1
解决办法
6765
查看次数

Laravel 路由在本地服务器上工作,但不在 cpanel 上

我正在使用 laravel 5.5.33。我在视图文件夹中创建了几个页面,如index.blade.php、about.blade.php等。

这两个页面的路由在本地机器上运行良好。然后我将项目文件夹迁移到我的共享主机。页面index.blade.php的路由工作正常,但相同的功能不适用于任何其他文件,例如about.blade.php。

网页.php

// This function is working for index file
 Route::get('/', function () {
    return view('index');
});

// This function is not working for about file
Route::get('about', function () {
    return view ('about');
});
Run Code Online (Sandbox Code Playgroud)

header.blade.php

<ul>
<li class="mega-menu"><a href="/">Home</a></li>
<li class="mega-menu"><a href="about">About Us</a></li>
<ul>
Run Code Online (Sandbox Code Playgroud)

php laravel

5
推荐指数
2
解决办法
2668
查看次数

两个 Pydantic 属性中的任何一个应该是可选的

我想验证有效负载模式并且我正在使用 Pydantic 来做到这一点。继承Pydantic创建的类BaseModel被命名为PayloadValidator,它有两个属性,addCustomPages一个是字典列表,deleteCustomPages一个是字符串列表。

class NestedCustomPages(BaseModel):
    """This is the schema for each custom page."""

    html: str
    label: str
    type: int

class PayloadValidator(BaseModelWithContext):
    """This class defines the payload load schema and also validates it."""

    addCustomPages: Optional[List[NestedCustomPages]]
    deleteCustomPages: Optional[List[str]]
Run Code Online (Sandbox Code Playgroud)

我想将类的任一属性声明PayloadValidator为可选。我曾尝试寻找解决方案,但找不到任何东西。

python pydantic

5
推荐指数
1
解决办法
2825
查看次数

如何让 Pydantic 立即引发异常

我编写了一个 Pydantic 模型来验证 API 负载。

有效负载有 2 个属性emailIdaslist和roleasstr

{
    "emailId": [], 
    "role":"Administrator"
}
Run Code Online (Sandbox Code Playgroud)

我需要对属性电子邮件执行两次验证 -

  1. emailId不能为空。
  2. emailId不得包含来自 x、y、z 域的电子邮件。

因此,为了实现这一点,我编写了 2 个验证方法,emailId如下所示 -

class PayloadValidator(BaseModel):

    emailId: List[str]
    role: str

    @validator("emailId")
    def is_email_list_empty(cls, email):
        if not email_id:
            raise ValueError("Email list is empty.")
        return email_id

    @validator("emailId")
    def valid_domains(cls, emailId):
        pass
Run Code Online (Sandbox Code Playgroud)

这里的问题是,如果emailId列表为空,那么验证器不会raise ValueError立即执行。它等待所有验证方法完成执行,这给我带来了一些严重的问题。

我有办法让它发生吗?

python pydantic

4
推荐指数
1
解决办法
9283
查看次数

如何在MySql docker镜像中安装sudo和nano命令

我正在尝试将 Django 应用程序与 MySql docker 容器连接。我正在使用最新版本的 MySql 即 MySql 8.0 来构建容器。我能够成功构建 MySql 容器,但无法使用 Django 的默认 MySql 连接器连接它。当我运行该docker-compose up命令时,出现下面提到的错误。

django.db.utils.OperationalError: (1045, 'Plugin caching_sha2_password could not be loaded: /usr/lib/x86_64-linux-gnu/mariadb19/plugin/caching_sha2_password.so: cannot open shared object file: No such file or directory')
Run Code Online (Sandbox Code Playgroud)

我开始寻找解决方案,并了解到 MySql 发布了对其默认身份验证插件的重大更改,大多数 MySql 连接器都不支持该更改。

要解决此问题,我必须将MySql 容器的文件设置default-authentication-plugin为。mysql_native_passwordmy.cnf

我使用命令登录到容器docker exec -it <conatiner id> /bin/bash,并且还能够my.cnf在容器内找到该文件。

要编辑该my.cnf文件,我必须使用nano如下所述的命令。

nano my.cnf

但不幸的nano是命令没有安装在 MySql Container 中。要安装,nano我需要sudo安装在容器中。

我尝试sudo使用下面提到的命令进行安装,但它不起作用。 …

mysql django docker

2
推荐指数
2
解决办法
4151
查看次数

在字典中用 0 替换“None”值的最佳方法

我有一本字典——

{

    'buy': {'trade_transaction_amount__sum': None, 'tax__sum': None, 'trade_fee__sum': None}, 
    'sell': {'trade_transaction_amount__sum': None, 'tax__sum': None, 'trade_fee__sum': None}
}
Run Code Online (Sandbox Code Playgroud)

将None值替换为0.

注意 - 并非每次这些键的值都是None。

python

2
推荐指数
1
解决办法
3534
查看次数

尽管具有适当的角色,GCP VM 实例仍无法从 Secret Manager 访问密钥

我在 GCPSecret Manager服务中创造了一些秘密。然后,为了在本地计算机上访问这些机密,我创建了一个service account密钥JSON来从本地计算机验证该服务帐户。我还向该服务帐户授予了该角色Secret Manager Secret Accessor,以使其能够访问来自 的机密值Secret Manager。现在,它在我的本地机器上运行得非常好。

此外,我想将此代码部署到 GCP Compute Instance。因此,我创建了一个并将源代码发送到该实例。Secret Manager Secret Accessor我还向计算实例的默认服务帐户授予了相同的权限。现在,当我在实例上运行尝试此代码时,它会返回一个权限被拒绝的错误,如下所述。

The above exception was the direct cause of the following exception:
ibdax            | 
ibdax            | Traceback (most recent call last):
ibdax            |   File "manage.py", line 22, in <module>
ibdax            |     main()
ibdax            |   File "manage.py", line 18, in main
ibdax            |     execute_from_command_line(sys.argv)
ibdax            |   File "/usr/local/lib/python3.7/site-packages/django/core/management/__init__.py", line 419, in execute_from_command_line
ibdax …
Run Code Online (Sandbox Code Playgroud)

google-compute-engine service-accounts google-cloud-platform google-secret-manager

1
推荐指数
1
解决办法
2679
查看次数