我正在使用 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) 我已经阅读了有关不向数据库添加重复记录的 Pandas to_sql 解决方案。我正在处理日志的 csv 文件,每次我上传一个新的日志文件时,我都会读取数据并使用 Pandas 创建一个新的数据框进行一些更改。然后我执行to_sql('Logs',con = db.engine, if_exists = 'append', index=True). 随着if_exists arg i 确保每个时间从新文件中的新创建数据帧被附加到现有的数据库。问题是它不断添加重复值。我想确保如果一个已经上传的文件被错误地再次上传,它不会被附加到数据库中。我想在创建数据库时直接尝试执行此操作,而无需找到解决方法,例如检查之前是否使用过文件名。
我正在使用flask-sqlalchemy。
谢谢你。
我正在使用 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) 我想验证有效负载模式并且我正在使用 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为可选。我曾尝试寻找解决方案,但找不到任何东西。
我编写了一个 Pydantic 模型来验证 API 负载。
有效负载有 2 个属性emailIdaslist和roleasstr
{
"emailId": [],
"role":"Administrator"
}
Run Code Online (Sandbox Code Playgroud)
我需要对属性电子邮件执行两次验证 -
emailId不能为空。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立即执行。它等待所有验证方法完成执行,这给我带来了一些严重的问题。
我有办法让它发生吗?
我正在尝试将 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使用下面提到的命令进行安装,但它不起作用。 …
我有一本字典——
{
'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。
我在 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