如果您对Pythonyaml使用的包和pythonyaml.load感兴趣,那么这篇文章一定是您不可错过的。我们将详细讲解Pythonyaml使用的包的各种细节,并对pythonyaml.load进行
如果您对Python yaml 使用的包和python yaml.load感兴趣,那么这篇文章一定是您不可错过的。我们将详细讲解Python yaml 使用的包的各种细节,并对python yaml.load进行深入的分析,此外还有关于2022-12-23:portainer 是 docker 的 web 可视化工具。如果根据 docker 部署去写 yaml,默认 local 是 k8s,而不是 docker,这不符合需求,需要修改 yaml。请问部署在、API 管理 - 定制 yaml 文件管理 api 并基于 yaml 文件生成 client 端、server 端、springboot 完整程序、Azure DevOps YAML 管道从传递的变量中删除引号和双反斜杠 Classic Pipeline 通过 Playbook (")YAML 管道通过 Playbook (")元:Classic Pipeline 通过 Playbook (\\)YAML 管道通过 Playbook (\\)YAML 管道内容说明buildOption 作为对象buildOption 作为 JSON、Doctrine.yaml" 不包含有效的 YAML:不能在不带引号的映射值中使用冒号的实用技巧。
本文目录一览:- Python yaml 使用的包(python yaml.load)
- 2022-12-23:portainer 是 docker 的 web 可视化工具。如果根据 docker 部署去写 yaml,默认 local 是 k8s,而不是 docker,这不符合需求,需要修改 yaml。请问部署在
- API 管理 - 定制 yaml 文件管理 api 并基于 yaml 文件生成 client 端、server 端、springboot 完整程序
- Azure DevOps YAML 管道从传递的变量中删除引号和双反斜杠 Classic Pipeline 通过 Playbook (")YAML 管道通过 Playbook (")元:Classic Pipeline 通过 Playbook (\\)YAML 管道通过 Playbook (\\)YAML 管道内容说明buildOption 作为对象buildOption 作为 JSON
- Doctrine.yaml" 不包含有效的 YAML:不能在不带引号的映射值中使用冒号
Python yaml 使用的包(python yaml.load)
通常 Python 使用的 Yaml 文件处理的包有 2 个。
- PyYAML
- ruamel.yaml
可以理解为 PyYAML 是 Python 自带的 Yaml 数据处理库,ruamel.yaml 是 PyYAML 的增强版。
因此使用 ruamel.yaml 的会比较多,而且很多语法和函数都是通用的。
安装
PyYAML 和 ruamel.yaml 都需要安装。
使用 pip install 进行安装就可以了。过程非常简单。
pip install pyyaml
pip install ruamel.yaml
输出
对比了下 2 个包的输出格式,ruamel.yaml 输出格式更好,更加标准。
这也许就是很多人使用 ruamel.yaml 的原因吧。
对比下使用 PyYAML 的输出来看,确实 PyYAML 的输出文件更加不好阅读。
因为我们在测试的时候只有很少的数据量,如果你的 yaml 文件的数据量比较大的话,那读起来还是很费劲的。
https://www.ossez.com/t/python-yaml/13386
2022-12-23:portainer 是 docker 的 web 可视化工具。如果根据 docker 部署去写 yaml,默认 local 是 k8s,而不是 docker,这不符合需求,需要修改 yaml。请问部署在
2022-12-23:portainer 是 docker 的 web 可视化工具。如果根据 docker 部署去写 yaml,默认 local 是 k8s,而不是 docker,这不符合需求,需要修改 yaml。请问部署在 k3s 中,并且默认 local 是 docker,yaml 文件如何写?
答案 2022-12-23:
1.portainer 在默认情况下用的是 k8s 环境,所以需要改成 docker 环境,根据如下代码块一的 go 代码可知,把 "KUBERNETES_SERVICE_HOST" 环境变量设置为空,就会把默认环境变成 docker 环境。
2. 根据命令行参数,给 --admin-password 一个值,你就不需要创建用户了。
3.--admin-password 是一个哈希值,根据如下代码块二的 go 代码可知,需要将密码转成哈希才行。"moonfdd--moonfdd" 转换成哈希是 "$2a$10$4m4rYwK/TA8GRkyz4UrZ2e8B4GDG8ZhBkyGawJ05q1zJ7zmLywzmW"。
// 代码块一
// api/platform/platform.go
const (
PodmanMode = "PODMAN"
KubernetesServiceHost = "KUBERNETES_SERVICE_HOST"
NomadJobName = "NOMAD_JOB_NAME"
)
// DetermineContainerPlatform will check for the existence of the PODMAN_MODE
// or KUBERNETES_SERVICE_HOST environment variable to determine if
// the container is running on Podman or inside the Kubernetes platform.
// Defaults to Docker otherwise.
func DetermineContainerPlatform() (ContainerPlatform, error) {
podmanModeEnvVar := os.Getenv(PodmanMode)
if podmanModeEnvVar == "1" {
return PlatformPodman, nil
}
serviceHostKubernetesEnvVar := os.Getenv(KubernetesServiceHost)
if serviceHostKubernetesEnvVar != "" {
return PlatformKubernetes, nil
}
nomadJobName := os.Getenv(NomadJobName)
if nomadJobName != "" {
return PlatformNomad, nil
}
if !isRunningInContainer() {
return "", nil
}
dockerCli, err := client.NewClientWithOpts()
if err != nil {
return "", errors.WithMessage(err, "failed to create docker client")
}
defer dockerCli.Close()
info, err := dockerCli.Info(context.Background())
if err != nil {
if client.IsErrConnectionFailed(err) {
log.Warn().
Err(err).
Msg("failed to retrieve docker info")
return "", nil
}
return "", errors.WithMessage(err, "failed to retrieve docker info")
}
if info.Swarm.NodeID == "" {
return PlatformDockerStandalone, nil
}
return PlatformDockerSwarm, nil
}
// 代码块二
// api/cmd/portainer/main.go
adminPasswordHash := ""
if *flags.AdminPasswordFile != "" {
content, err := fileService.GetFileContent(*flags.AdminPasswordFile, "")
if err != nil {
log.Fatal().Err(err).Msg("failed getting admin password file")
}
adminPasswordHash, err = cryptoService.Hash(strings.TrimSuffix(string(content), "\n"))
if err != nil {
log.Fatal().Err(err).Msg("failed hashing admin password")
}
} else if *flags.AdminPassword != "" {
adminPasswordHash = *flags.AdminPassword
}
yaml 如下:
# 用户名:admin
# 密码:moonfdd--moonfdd
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: portainer
name: portainer
namespace: moonfdd
spec:
replicas: 1
selector:
matchLabels:
app: portainer
template:
metadata:
labels:
app: portainer
spec:
containers:
- env:
- name: "KUBERNETES_SERVICE_HOST"
value: ""
args:
- "--admin-password"
- "$2a$10$4m4rYwK/TA8GRkyz4UrZ2e8B4GDG8ZhBkyGawJ05q1zJ7zmLywzmW"
image: portainer/portainer-ce:alpine
imagePullPolicy: IfNotPresent
name: portainer
securityContext:
privileged: true
volumeMounts:
- mountPath: /var/run/docker.sock
name: volv
# - mountPath: /data
# name: volv2
volumes:
- hostPath:
path: /var/run/docker.sock
type: Socket
name: volv
# - hostPath:
# path: /root/k8s/moonfdd/portainer/data
# type: DirectoryOrCreate
# name: volv2
---
apiVersion: v1
kind: Service
metadata:
labels:
app: portainer
name: portainer
namespace: moonfdd
spec:
ports:
- port: 8000
protocol: TCP
targetPort: 8000
name: 8000-8000
- port: 9443
protocol: TCP
targetPort: 9443
name: 9443-9443
- port: 9000
protocol: TCP
targetPort: 9000
name: 9000-9000
selector:
app: portainer
type: NodePort
API 管理 - 定制 yaml 文件管理 api 并基于 yaml 文件生成 client 端、server 端、springboot 完整程序
1. api 管理方式背景
随着项目团队不断地规范,开发流程的每一步都在不断的变化,变得更加高效并且方便管理;api 管理也经历了不少的变化,主要变化从上到下演进:
- 编写后端接口 api,从 status 的 action 到 springmvc 的 @RequestMapping,这些框架的确可以帮我们完成后端接口的编写,但对于前后端分离的项目,还需要编写项目组制定的接口文档;我相信,没多少程序员写完接口后还想写接口文档的。
- 由于项目组开发系统比较多,为了统一管理公司内部所有系统的接口文档,这个时候有的公司会定制化自己的接口文档管理应用,通过这个应用可以简单的实现在网站上直接编写接口文档信息,无须考虑接口文档样式等等,这样做的确比上一种好一点,通过对定制化这个网站,我们可以做到在线调试接口情况、分版本管理、分配 api 管理权限。API 管理 - 使用开源 xxl-api 项目管理接口
- 在项目中集成 swagger 并在接口上加上 api 信息的注解,并通过 swagger-ui.html 界面进行 api 接口的查看和调试,详细请参考:API 管理 - 基于 SpringBoot 项目集成 swagger 实现接口文档自动生成,如果觉得这套 ui 不友好,没关系,可以换,API 管理 - 舍弃 springfox-swagger-ui,采用功能更加丰富的 swagger-bootstrap-ui
- 通过上面一种就基本可以完成 api 管理操作了,但这样的 swagger 管理起来也存在代码侵入性太高,为了达到目的还需要反复的调整接口注解或参数;既然存在问题,阅读完这篇文章你就会学会:如何定制 yaml 文件管理 api 并基于 yaml 文件生成 client 端、server 端、springboot 完整程序,接下来进入主题。
2. 需要了解几个概念
- swagger 2.0 和 open api 3.0 规范,其实就是规范对于的 yaml 文件格式定义,不同的情况下可以通过特定的规范进行不同后端代码生成,对于 swagger 2.0 和 open api 3.0 规范生成代码的插件也有好多个,swagger 2.0 和 open api 3.0 还支持互转,请参考:swagger2openapi。
这里先介绍基于 swagger 2.0 生成后端代码,试过 open api 3.0 去做,但插件不太给力,没有达到我想要的效果,没法达到:基于 yaml 文件生成 client 端、server 端、springboot 完整程序;
- 满足 swagger 2.0 文件有 json、yaml 二种格式的,所以以后我们只要学会编写这种 yaml 或 json 文件编写规范就可以对接口进行管理。
3. 使用 swagger-codegen 完成基于 yaml 文件生成 client 端、server 端、springboot 完整程序
请先阅读,这篇文章,写的不错:spring boot 项目使用 swagger-codegen 生成服务间调用的 jar 包,百度了很多帖子,就这篇文章给了我想要的效果。
通过这种方法我可以生成一个只带 NameApi 的接口的程序("interfaceOnly" : "true"),通过对这个程序的打包依赖到项目中,就可以完成对 api 管理,每次更新 api 接口只需要编写好 yaml 重新生成一下 jar 并依赖到项目中就行,这样还可以减少 swagger 相关注解的侵入性。通过这种方式只用在 controller 上实现对于的 jar 中的接口,还不需要调整 service 和 mapper 中的逻辑,service 和 mapper 层还可以通过之前方式直接生成与数据库交互的通用接口。
除此之外 swagger-codegen 还可以通过 "library" : "feign" 生产我们想要的客户端代码(jar),这里的客户端代码就是一些封装过的工具,可以通过指定方式去和 server 交互,如:sso-client.jar 就是负责与 sso-server 进行交互的。swagger-codegen 功能还有很多,这里就不一一介绍了。
Azure DevOps YAML 管道从传递的变量中删除引号和双反斜杠 Classic Pipeline 通过 Playbook (")YAML 管道通过 Playbook (")元:Classic Pipeline 通过 Playbook (\\)YAML 管道通过 Playbook (\\)YAML 管道内容说明buildOption 作为对象buildOption 作为 JSON
如何解决Azure DevOps YAML 管道从传递的变量中删除引号和双反斜杠 Classic Pipeline 通过 Playbook (")YAML 管道通过 Playbook (")元:Classic Pipeline 通过 Playbook (\\\\)YAML 管道通过 Playbook (\\\\)YAML 管道内容说明buildOption 作为对象buildOption 作为 JSON
我有一个管道,它期望 Ansible-Playbook 作为在队列时间 (string
) 上传递的变量。将我的经典 Pipeline 转换为 YAML 后,我发现 Playbook-String 中的 Quotes 丢失了。
Classic Pipeline 通过 Playbook ("
)
---
-
hosts: "all"
gather_facts: true
vars:
SoftwareFolder: "ansibleshare"
SoftwareSource: "/mnt/{{ SoftwareFolder }}"
AnsibleRoot: "D:/Ansible"
Proxy: "http://www-cache.de:3128"
tasks:
-
name: "set windows proxy settings"
win_inet_proxy:
auto_detect: false
proxy: "{{ Proxy }}"
...
YAML 管道通过 Playbook ("
)
---
-
hosts: all
gather_facts: true
vars:
SoftwareFolder: ansibleshare
SoftwareSource: /mnt/{{ SoftwareFolder }}
AnsibleRoot: D:/Ansible
Proxy: http://www-cache.de:3128
tasks:
-
name: set windows proxy settings
win_inet_proxy:
auto_detect: false
proxy: {{ Proxy }}
...
我尝试将 Playbook 包装在单引号中,然后再传递它 (''${yaml}''
),但这无济于事。
引用是 Playbooks 的一个重要组成部分,我很确定是有原因的,为什么管道会这样。但是作为利益相关者,当一个变量通过它被改变时感觉很糟糕,而且在经典的 Pipelines 中没有必要这样做。
我该如何解决?
元:
18.170.30525.1 (Azure DevOps Server 2020)
on prem
API: "azure-devops-node-api": "^10.2.1"
编辑 1
ansible-playbooks 上下文中的另一个问题是 YAML 管道也会误解双反斜杠 \\\\
,这对于 playbooks 中的 windows 路径非常重要:
Classic Pipeline 通过 Playbook (\\\\
)
-
name: "msi install 7z"
win_package:
path: "{{ AnsibleRoot }}\\\\{{ SoftwareFolder }}\\\\7z\\\\7z.msi"
state: "present"
-
name: "exe install git client"
win_package:
path: "{{ AnsibleRoot }}\\\\{{ SoftwareFolder }}\\\\git\\\\Git.exe"
state: "present"
product_id: "git"
creates_path: "C:\\\\Program Files\\\\Git\\\\cmd\\\\git.exe"
arguments:
- "/SILENT"
YAML 管道通过 Playbook (\\\\
)
-
name: msi install 7z
win_package:
path: {{ AnsibleRoot }}\\{{ SoftwareFolder }}\\7z\\7z.msi
state: present
-
name: exe install git client
win_package:
path: {{ AnsibleRoot }}\\{{ SoftwareFolder }}\\git\\Git.exe
state: present
product_id: git
creates_path: C:\\Program Files\\Git\\cmd\\git.exe
arguments:
- /SILENT
这使得 YAML-Pipelines 很难用于该用例。 :(
编辑 2
YAML 管道内容
# NAME
name: "$(Build.BuildId)-$(Build.sourceBranchName) ($(Build.RequestedFor))"
# TRIGGER
trigger: none
# VARIABLES
variables:
- name: "PathPlaybook"
value: "ansible-playbook.yml"
- name: "PathInventory"
value: "ansible-inventory.yml"
# STAGES
stages:
# ----------------------------------------------------------- BUILD
- stage: "Build"
# POOL
pool:
name: "Ansible"
# JOBS
jobs:
- job:
displayName: "Agent job"
# STEPS
steps:
# BASH SCRIPT TO CREATE FILE FROM PASSED ParaMETER TO TARGET MACHINE
- task: Bash@3
inputs:
targettype: "inline"
script: |
echo ''$(Inventory)'' > $(PathInventory)
echo ''$(Playbook)'' > $(PathPlaybook)
echo Inventory:
echo ''$(Inventory)''
echo Playbook:
echo ''$(Playbook)''
# ANSIBLE
- task: Ansible@0
displayName: Ansible Agent''
inputs:
playbookPathOnAgentMachine: ''$(PathPlaybook)''
inventoriesAgentMachine: file
inventoryFileOnAgentMachine: ''$(PathInventory)''
failOnStdErr: false
说明
- 管道接收
Inventory
和Playbook
作为string
- Bash 任务将
string
写入文件并生成我在上面发布的输出(更多用于调试) - Ansible 执行文件
请记住。经典中的相同管道运行良好:
编辑 3:queueBuild 函数的参数
我为 queueBuild
函数使用了 3 个参数
- ``buildOption = 见下文
- 项目名称 =
MyProject
- ignoreWarnings =
true
buildOption 作为对象
deFinition:{id: 23}
parameters:''{"Inventory":"---\\n all: \\n hosts: \\n PTC-BLD-ADA5: \\n ansible_user: \\"PTC-SVC-ADS-AGT\\"\\n ansible_password: \\"AgentPW2019\\"\\n ansible_port: 5986\\n ansible_connection: \\"winrm\\"\\n ansible_winrm_transport: \\"ntlm\\"\\n ansible_winrm_server_cert_validation: \\"ignore\\"\\n","Playbook":"---\\n - \\n hosts: \\"all\\"\\n gather_facts: true\\n vars: \\n SoftwareFolder: \\"ansibleshare\\"\\n SoftwareSource: \\"/mnt/{{ SoftwareFolder }}\\"\\n AnsibleRoot: \\"D:\\\\\\\\Ansible\\"\\n Proxy: \\"http://www-cache.psitrans.de:3128\\"\\n tasks: \\n - \\n name: \\"set windows proxy settings\\"\\n win_inet_proxy: \\n auto_detect: false\\n proxy: \\"{{ Proxy }}\\"\\n - \\n name: \\"create directory ansible\\"\\n win_file: \\n path: \\"{{ AnsibleRoot }}\\"\\n state: \\"directory\\"\\n - \\n name: \\"copy software to target machine\\"\\n win_copy: \\n src: \\"{{ SoftwareSource }}\\"\\n dest: \\"{{ AnsibleRoot }}\\"\\n - \\n name: \\"exe install git client\\"\\n win_package: \\n path: \\"{{ AnsibleRoot }}\\\\\\\\{{ SoftwareFolder }}\\\\\\\\git\\\\\\\\Git.exe\\"\\n state: \\"present\\"\\n product_id: \\"git\\"\\n creates_path: \\"C:\\\\\\\\Program Files\\\\\\\\Git\\\\\\\\cmd\\\\\\\\git.exe\\"\\n arguments: \\n - \\"/SILENT\\"\\n - \\n name: \\"msi install 7z\\"\\n win_package: \\n path: \\"{{ AnsibleRoot }}\\\\\\\\{{ SoftwareFolder }}\\\\\\\\7z\\\\\\\\7z.msi\\"\\n state: \\"present\\"\\n"}''
sourceBranch:''refs/heads/master''
buildOption 作为 JSON
{
"deFinition": { "id": 23 },"id": 23,"parameters": "{\\"Inventory\\":\\"---\\n all: \\n hosts: \\n PTC-BLD-ADA5: \\n ansible_user: \\"PTC-SVC-ADS-AGT\\"\\n ansible_password: \\"AgentPW2019\\"\\n ansible_port: 5986\\n ansible_connection: \\"winrm\\"\\n ansible_winrm_transport: \\"ntlm\\"\\n ansible_winrm_server_cert_validation: \\"ignore\\"\\n\\",\\"Playbook\\":\\"---\\n - \\n hosts: \\"all\\"\\n gather_facts: true\\n vars: \\n SoftwareFolder: \\"ansibleshare\\"\\n SoftwareSource: \\"/mnt/{{ SoftwareFolder }}\\"\\n AnsibleRoot: \\"D:\\\\\\\\Ansible\\"\\n Proxy: \\"http://www-cache.psitrans.de:3128\\"\\n tasks: \\n - \\n name: \\"set windows proxy settings\\"\\n win_inet_proxy: \\n auto_detect: false\\n proxy: \\"{{ Proxy }}\\"\\n - \\n name: \\"create directory ansible\\"\\n win_file: \\n path: \\"{{ AnsibleRoot }}\\"\\n state: \\"directory\\"\\n - \\n name: \\"copy software to target machine\\"\\n win_copy: \\n src: \\"{{ SoftwareSource }}\\"\\n dest: \\"{{ AnsibleRoot }}\\"\\n - \\n name: \\"exe install git client\\"\\n win_package: \\n path: \\"{{ AnsibleRoot }}\\\\\\\\{{ SoftwareFolder }}\\\\\\\\git\\\\\\\\Git.exe\\"\\n state: \\"present\\"\\n product_id: \\"git\\"\\n creates_path: \\"C:\\\\\\\\Program Files\\\\\\\\Git\\\\\\\\cmd\\\\\\\\git.exe\\"\\n arguments: \\n - \\"/SILENT\\"\\n - \\n name: \\"msi install 7z\\"\\n win_package: \\n path: \\"{{ AnsibleRoot }}\\\\\\\\{{ SoftwareFolder }}\\\\\\\\7z\\\\\\\\7z.msi\\"\\n state: \\"present\\"\\n\\"}","sourceBranch": "refs/heads/master"
}
我的应用程序使用 queueBuild
作为对象调用 buildOption
函数,就像预期的那样。
重要的是要知道这对于经典流水线来说完全没问题,只有 YAML 流水线对上面描述的传递参数进行更改。
解决方法
我可以使用 String.raw
方法成功传递带有 " 和 " \\" 的参数字符串。见下文:
let ps = String.raw `{"Inventory":"---\\n all: \\n hosts: \\n PTC-BLD-ADA5: \\n ansible_user: \\"PTC-SVC-ADS-AGT\\"\\n ansible_password: \\"AgentPW2019\\"\\n ansible_port: 5986\\n ansible_connection: \\"winrm\\"\\n ansible_winrm_transport: \\"ntlm\\"\\n ansible_winrm_server_cert_validation: \\"ignore\\"\\n","Playbook":"---\\n - \\n hosts: \\"all\\"\\n gather_facts: true\\n vars: \\n SoftwareFolder: \\"ansibleshare\\"\\n SoftwareSource: \\"/mnt/{{ SoftwareFolder }}\\"\\n AnsibleRoot: \\"D:\\\\\\\\Ansible\\"\\n Proxy: \\"http://www-cache.psitrans.de:3128\\"\\n tasks: \\n - \\n name: \\"set windows proxy settings\\"\\n win_inet_proxy: \\n auto_detect: false\\n proxy: \\"{{ Proxy }}\\"\\n - \\n name: \\"create directory ansible\\"\\n win_file: \\n path: \\"{{ AnsibleRoot }}\\"\\n state: \\"directory\\"\\n - \\n name: \\"copy software to target machine\\"\\n win_copy: \\n src: \\"{{ SoftwareSource }}\\"\\n dest: \\"{{ AnsibleRoot }}\\"\\n - \\n name: \\"exe install git client\\"\\n win_package: \\n path: \\"{{ AnsibleRoot }}\\\\\\\\{{ SoftwareFolder }}\\\\\\\\git\\\\\\\\Git.exe\\"\\n state: \\"present\\"\\n product_id: \\"git\\"\\n creates_path: \\"C:\\\\\\\\Program Files\\\\\\\\Git\\\\\\\\cmd\\\\\\\\git.exe\\"\\n arguments: \\n - \\"/SILENT\\"\\n - \\n name: \\"msi install 7z\\"\\n win_package: \\n path: \\"{{ AnsibleRoot }}\\\\\\\\{{ SoftwareFolder }}\\\\\\\\7z\\\\\\\\7z.msi\\"\\n state: \\"present\\"\\n"}`;
let vstsdef : bi.Build = {
definition: { id: 48 },parameters: ps
};
let nq = await build.queueBuild(vstsdef,"TestProject")
查看以下 yaml 管道的输出:
Doctrine.yaml" 不包含有效的 YAML:不能在不带引号的映射值中使用冒号
如何解决Doctrine.yaml" 不包含有效的 YAML:不能在不带引号的映射值中使用冒号
我看到有人问过类似的问题,但没有找到我的答案。 大多数是某种类型的错别字,这对我来说可能是真的,但我已经盯着这个看了一个小时却找不到,也许其他人可以,我真的很感激!
doctrine:
dbal:
default_connection: default
connections:
default:
#User DB
url: ''%env(resolve:DATABASE_URL)%''
driver: ''pdo_MysqL''
server_version: ''5.7''
charset: utf8mb4
mededelingen:
#mededelingen DB
url: ''%env(resolve:DATABASE_MEDEDELINGEN_URL)%''
driver: ''pdo_MysqL''
server_version: ''5.7''
charset: utf8mb4
# IMPORTANT: You MUST configure your server version,# either here or in the DATABASE_URL env var (see .env file)
#server_version: ''13''
orm:
auto_generate_proxy_classes: true
naming_strategy: doctrine.orm.naming_strategy.underscore
auto_mapping: true
default:
connection: default
mappings:
users:
is_bundle: false
type: annotation
dir: ''%kernel.project_dir%/src/Entity''
prefix: ''App\\Entity\\User''
alias: App
mededelingen:
connection: mededelingen
mappings:
Mededelingen:
is_bundle: false
type: annotation
dir: ''%kernel.project_dir%/src/Entity''
prefix: ''App\\Entity\\Mededeling''
alias: Mededeling
第 41 行(靠近“别名:Mededeling”)
解决方法
我尝试使用 linter 解决您的问题。
首先,您在 entity_managers
之后错过了属性 orm
,然后我不得不移动 naming_strategy
和 auto_mapping
auto_mapping
只能在一个实体管理器上使用,所以我将其设置为默认值。
对我来说没有问题的结果:
doctrine:
dbal:
default_connection: default
connections:
default:
#User DB
url: ''%env(resolve:DATABASE_URL)%''
driver: ''pdo_mysql''
server_version: ''5.7''
charset: utf8mb4
mededelingen:
#mededelingen DB
url: ''%env(resolve:DATABASE_MEDEDELINGEN_URL)%''
driver: ''pdo_mysql''
server_version: ''5.7''
charset: utf8mb4
# IMPORTANT: You MUST configure your server version,# either here or in the DATABASE_URL env var (see .env file)
#server_version: ''13''
orm:
entity_managers:
auto_generate_proxy_classes: true
default:
connection: default
naming_strategy: doctrine.orm.naming_strategy.underscore
auto_mapping: true
mappings:
users:
is_bundle: false
type: annotation
dir: ''%kernel.project_dir%/src/Entity''
prefix: ''App\\Entity\\User''
alias: App
mededelingen:
connection: mededelingen
naming_strategy: doctrine.orm.naming_strategy.underscore
mappings:
Mededelingen:
is_bundle: false
type: annotation
dir: ''%kernel.project_dir%/src/Entity''
prefix: ''App\\Entity\\Mededeling''
alias: Mededeling
我们今天的关于Python yaml 使用的包和python yaml.load的分享已经告一段落,感谢您的关注,如果您想了解更多关于2022-12-23:portainer 是 docker 的 web 可视化工具。如果根据 docker 部署去写 yaml,默认 local 是 k8s,而不是 docker,这不符合需求,需要修改 yaml。请问部署在、API 管理 - 定制 yaml 文件管理 api 并基于 yaml 文件生成 client 端、server 端、springboot 完整程序、Azure DevOps YAML 管道从传递的变量中删除引号和双反斜杠 Classic Pipeline 通过 Playbook (")YAML 管道通过 Playbook (")元:Classic Pipeline 通过 Playbook (\\)YAML 管道通过 Playbook (\\)YAML 管道内容说明buildOption 作为对象buildOption 作为 JSON、Doctrine.yaml" 不包含有效的 YAML:不能在不带引号的映射值中使用冒号的相关信息,请在本站查询。
本文标签: