- 博客(38)
- 收藏
- 关注
原创 python函数参数默认值为可变对象(例如{},[]等)的坑
然而,当将可变对象作为默认参数时,需要注意到这个默认对象在函数调用过程中是共享的,这可能导致一些意外的行为。:如果在多个地方使用了同一个函数,并且使用了默认参数,那么这些地方都将共享同一个默认参数对象。如果在其中一个地方修改了默认参数,可能会影响到其他地方。:如果在函数内部修改了默认参数,这些修改会影响到后续函数调用中使用了默认参数的地方。为了避免这些潜在的问题,可以使用不可变对象作为默认参数,或者在函数内部创建一个新的可变对象。,并且在函数内部对它进行了修改,那么这些修改会在之后的函数调用中持续存在。
2024-04-08 11:37:49
253
原创 SQLAlchemy 来查询并统计 MySQL 中 JSON 字段的一个值
在使用 SQLAlchemy 来查询并统计 MySQL 中 JSON 字段的一个值时,你可以结合 SQLAlchemy 的。:使用 SQLAlchemy 的查询接口和函数来提取 JSON 字段的值,并按这个值进行分组统计。首先,确保你已经安装了 SQLAlchemy。方法来进行分组统计。下面是如何在 SQLAlchemy 中实现这一点的基本步骤。的 JSON 类型字段,我们想要按照。:首先,创建一个数据库引擎来管理连接。:定义一个模型来映射到数据库中的表。的表,其中有一个名为。
2024-04-02 11:45:02
999
原创 使用 PyArmor 加密一个 Python 包
这些选项可以帮助你更灵活地保护你的 Python 代码。记住,虽然加密可以提高你的代码保护级别,防止未经授权的查看和修改,但任何加密措施都不能提供 100% 的安全保障。加密应该被视为安全措施的一部分,而不是全部。选项来递归地加密指定目录下的所有 Python 文件。:加密过程可能会改变文件的结构,因此在部署加密后的包之前,建议充分测试以确保一切功能正常。:首先确保 PyArmor 已经被安装在你的环境中。目录下的所有 Python 文件,并将加密后的文件存放在。你可以将这个目录下的。
2024-04-02 11:30:25
711
原创 Git要修改某个特定提交(commit)的用户名和电子邮件信息
要修改某个特定提交(commit)的用户名和电子邮件信息,你可以使用命令来修改最近的提交。如果需要修改历史中的某个特定提交,你可以使用git rebase命令进行更复杂的操作。
2024-03-27 17:23:49
997
原创 sqlalchemy.exc.CompileError: can‘t render element of type MEDIUMTEXT
请注意,这种方法虽然解决了不同环境下数据库类型兼容性的问题,但它也使得你的模型定义依赖于特定的数据库实现,这可能会影响代码的可移植性和清晰度。因此,建议仅在确实需要处理特定数据库类型差异的情况下使用这种方法。的值来确定当前连接的数据库类型。然后,根据数据库类型动态选择列类型。如果是MySQL,我们使用。在测试环境和生产环境中使用不同的数据库,而不需要修改模型代码。想要实现测试环境使用sqlit方便开发;对于其他数据库类型,我们可以选择使用。如果是SQLite,我们使用。在这个例子中,我们首先检查。
2024-03-27 17:08:57
347
原创 pymysql.err.DataError: (1406, “Data too long for column ‘response‘ at row 2“)
数据字段由TEXT修改为LONGTEXT。备注:mysql存储限制。原来是因为要存入这厮。
2024-03-25 17:31:49
210
原创 ssh: Could not resolve hostname ssh.github.com: Temporary failure in name resolutionfatal: Could no
【代码】ssh: Could not resolve hostname ssh.github.com: Temporary failure in name resolutionfatal: Could no。
2024-03-25 15:40:47
815
原创 pymysql.err.OperationalError: (1055, “Expression #3 of SELECT list is not in GROUP BY clause and con
报错如下问了AI,回答如下:这个错误信息指出的问题与 MySQL 的sql_mode设置有关,特别是模式。当启用了模式时,所有在SELECT列表中,但不在GROUP BY子句中的列,都必须在一个聚合函数内。这个模式的目的是确保当使用GROUP BY时,返回的结果是确定的,因为如果SELECT列表中有不在GROUP BY中的列,那么这些列的值在分组中可能有多个,而 MySQL 不知道应该返回哪个值。
2024-03-22 17:23:22
293
原创 element-UI展开行expand动态加载数据时遇到的坑-展开多行数据相同
统计数据列表页,点击每行可以展开,因为数据量大,设计时后端考虑每次点击动态拉取该行对应的详情数据。
2024-03-21 17:59:59
435
原创 sqlalchemy.exc.OperationalError: (pymysql.err.OperationalError) (2013, ‘Lost connection to MySQL ser
sqlalchemy.exc.OperationalError: (pymysql.err.OperationalError) (2013, 'Lost connection to MySQL server during query')
2024-03-11 17:26:45
904
原创 sqlalchemy默认数据库连接池限制导致的服务异常排查
sqlalchemy的连接池默认设置pool_size=5, max_overflow=10。批量添加100个耗时任务,发现有成功执行仅有15个,找到报错log。考虑内存和cpu,合理设置以上2个参数。
2024-03-01 17:54:33
482
原创 sqlarchemy的json字段无法保存
由于未正确触发 SQLAlchemy 的脏检查机制所致。在 SQLAlchemy 中,如果你直接修改了类似于字典这样的可变对象,并未触发其脏检查机制,那么在提交到数据库时,这些修改可能不会被记录下来。为了确保 SQLAlchemy 能够正确地捕获对可变对象的修改,并在提交时保存这些修改,你需要确保正确地触发了脏检查机制
2024-02-28 17:57:51
404
原创 处理异常sqlalchemy.exc.OperationalError: (pymysql.err.OperationalError) (1038, ‘Out of sort memory
前端查询列表页一直转圈圈,打开控制台发现是API 500了。看了下后端日志,核心问题是。前端试了下还是转圈,API依然500,又看了下后端日志,原来是mysql连接断开。修改mysql容器的配置。手动重启后端服务即可。
2024-02-05 14:12:21
435
原创 “export ‘ref‘ was not found in ‘vue‘
【代码】“export ‘ref‘ was not found in ‘vue‘
2024-01-24 16:52:41
704
原创 docker中python3.10.5的subprocess.run子进程运行可执行文件报FileNotFoundError
执行subprocess.run(['./xray_linux_amd64', 'webscan', '--basic-crawler', f'{url}', '--json-output', f'./reports/xray-{target_id}.json'], cwd=XRAY_PATH)手动执行下,找到这个文件,居然还报这个错,不可思议,瞪眼说瞎话。不是的,看了下源码问题不在这,所以这个报错很有误导性!原来是坑爹的精简版系统引发的奇怪报错!然并卵,还是一样的报错!运行,然后果然成功!
2024-01-22 17:56:13
656
原创 fastapi后台任务中使用多线程调用数据库session报错
望着代码陷入自我怀疑,再三确认了多线程的代码没问题,想起来如题的坑,于是在子线程的函数中加入try catch,通过logging主动捕获并打印出异常。批量耗时任务创建的api,最开始采用for循环串行执行耗时任务,使用的是请求初始化时的数据库session,技术上没问题。于是修改子线程函数,增加参数,接受一个新创建的会话。上来直接改造多线程,发现子线程很快stoped,根本没执行。但业务上需要优化成并发。终于,世界恢复平静!
2024-01-19 16:37:41
531
1
原创 docker-compose更新单个服务
但日常开发场景更多的是要更新单个服务,比如更新后端服务镜像,而数据库,缓存这些不需要更新。当然docker命令也行,但需要自己配置网络,挂载等,导致命令很长,不方便。docker-compose可以方便快速地一键化部署,这个不展开讲。拆开yml文件,后端服务独立一个。
2023-08-15 18:05:22
762
原创 Django迁移文件管理规范
开发中遇到,Django版本不一致导致生成的迁移文件格式差异;研发忘记提交迁移文件;研发随意重命名会导致已执行的迁移文件重复执行,导致迁移失败,容器异常退出等问题,会阻塞协作开发的进度。为避免上述问题,故做此规范。
2023-08-15 15:17:59
80
原创 配置加载方案
一般是和环境绑定的,即同一环境下不会变更,比如Nginx地址。需要热加载的,一般和业务相关,比如胎脑检测报告中必须的字段。所有配置数据,都需要在配置文件中写上兜底数据。避免配置硬编码和个人/测试环境配置误提交。
2023-07-28 11:07:50
67
1
原创 技术各项规范
标题符合argular格式,用作合并到目标分支时,压缩后的commit。避免后端开发和前端扯皮后还要做变更,无效评审,浪费主管时间。目标分支会很干净,只有commit信息。分级管理,方便量化定制奖惩信息。回顾时可以准确会想起上下文。方便制定对应的量化奖惩制度。完成UT,联调,lint。配置必须所有议题都要解决。
2023-07-12 17:07:17
29
原创 Django UT
请求一定要使用from django.test import Client,否则测试数据会污染正式的数据库。Client设置hearder传参,很个性化,比如像设置header的Authorization。必须传HTTP_AUTHORIZATION=xxx。本质上是继承UnitTest实现,可轻松实现。case中的test_*方法执行是无序的。有以下几点需要特别注意。
2023-07-06 16:47:14
57
原创 记一次gitlab频繁出现5xx处理
etc/docker/daemon.json中配置。此时原容器并未生效,需要销毁并重新创建该配置才生效!原来是log日志把磁盘占满了。
2023-06-26 18:02:12
86
原创 Ubuntu22.04修改/etc/fstab时参数设错,导致启动异常,无法进入系统
2ctl+atl+f1/f2进入命令行,使用root帐密登录(会有报错和长时间等待,一样要有耐心)1使用系统盘恢复,但需要有U盘。恢复模式,如图无法正常使用。
2023-06-26 17:58:01
1019
原创 failed to create runc console socket: mkdir /tmp/ptyxxxx: read-only file system: unknown
使用恢复工具,发现上下左右很卡,几乎无响应,然后又出现熟悉的log。插上显示器,按提示执行 fsck -y /dev/sda5。凉凉,只能用U盘恢复了。
2023-06-25 13:53:01
322
原创 python semantic release(PSR)指南
分别强制指定版本号(即便距离上次发版以来,有多个feat/fix,一次只能改动一位版本号)次版本号(minor):当你做了向下兼容的功能性新增,可以理解为 Feature 版本。修订号(patch):当你做了向下兼容的问题修正,可以理解为 Bug fix 版本。更新本地git log和setup.py中的版本信息,以及CHANGELOG.md。主版本号(major):当你做了不兼容的 API 修改。
2023-06-21 09:15:38
156
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人