- 博客(57)
- 收藏
- 关注
原创 将postgresql结构和数据备份成sql语句
# 替换以下参数为你的实际信息 # -h:数据库主机(本地是localhost) # -p:端口(默认5432) # -U:用户名(默认postgres) # -d:要备份的数据库名(比如fwms1) # -f:输出的SQL文件路径(比如D:\backup\fwms1_backup.sql) "C:\Program Files\PostgreSQL\18\bin\pg_dump.exe" -h localhost -p 5432 -U postgres -d fwms1 -f "D:\backup\fwms
2025-12-17 10:34:16
211
原创 mongodb的备份和还原(精简)
6 还原命令 mongorestore --host 127.0.0.1 --db dbname --drop /backup/path/dbname。5 运行 备份命令 mongodump --host 127.0.0.1 --db dbname--out C:\backup\path。2 运行msi mongodb-database-tools-windows-x86_64-100.12.2.msi。1 官网下载对应版本msi。4 查看version。
2025-07-23 14:42:50
604
1
原创 fastAPI通过pyinstaller打包成exe运行时程序崩溃的解决方案
2 main.spec中必须修改hiddenimports。#红色部分替换成你自己的main文件位置。1 main.py中必须添加如下代码。1 . main.spec中的代码为。
2025-07-08 15:40:02
451
原创 python打开文件的路径问题
python json文件在app下的static文件夹里,获取方法在app下的utils文件夹的common.py文件夹里,如何在common.py里获取json。json_path = os.path.join(current_dir, '../../static/data.json') # 根据实际层级调整../PROJECT_ROOT = Path(__file__).parent.parent.parent # 根据实际层级调整。# 在common.py中。# 在项目启动脚本中。
2025-06-28 10:50:45
343
原创 postgresql 判断数据是否存在,如果不存在添加一条
3 使用WITH子查询(单语句完成): 利用CTE实现条件判断。2 使用DO匿名块(通用性强):通过显式判断实现条件插入。此方法依赖name列的唯一约束,冲突时自动跳过插入。方法1要求name列必须定义唯一约束。方法2可扩展添加更复杂的判断逻辑。字符串值需用单引号包裹('1')
2025-06-28 10:13:27
403
原创 循环向python异步中增加task的几个方法
在Python异步编程中,可以通过循环动态构建任务列表后传入asyncio.gather(),这是完全可行的实现方式。await asyncio.gather(*coros) # gather会自动将协程转为任务。大量任务时建议限制并发量(如使用asyncio.Semaphore)循环内创建的每个任务会立即开始调度执行,无需等待gather调用。task2 = coro2() # 未包装的协程。动态生成的任务列表需要通过*解包传入gather。通过列表推导式批量创建任务对象。
2025-06-28 10:05:35
321
原创 Python+FastAPI的一些语法与问题解决
Q6 data.sort("seq",1) 报错TypeError: sort() takes no positional arguments。data.sort(key=lambda x: x["seq"], reverse=True) # 降序排序。方法在Python 3.x版本中不再接受位置参数,必须使用关键字参数形式调用。Q2:为什么aysnc方法中调用其他async方法时,跳过了调试?Q4:python中如何获取服务端IP和hotsname?A7:获取的data是空但是还是被使用了。
2025-06-28 10:01:23
674
原创 无法加载文件 D:\venv\Scripts\Activate.ps1,因为在此系统上禁止运行脚本
如果当前使用Power Shell,切换到 Command Prompt(CMD)再试。
2025-06-23 13:54:42
330
原创 Python defaultdict,default_factory 怎么用?
print(game['Bob']) # 访问新键自动初始化:{'health': 100, 'level': 1}dd_list['colors'].append('red') # 自动创建 'colors': [] 然后追加。# 输出: {'math': ['Alice', 'Charlie'], 'physics': ['Bob']}nested_dict['A']['X'] += 1 # 无需检查多级键是否存在。game['Alice']['level'] = 5 # 自动创建完整结构。
2025-06-19 14:18:16
770
原创 fastAPI中的async_sessionmaker有什么用?一文告诉你如何使用异步处理多个方法
autocommit=False 和 expire_on_commit=False 确保事务边界清晰,数据一致性更强。pool_pre_ping=True 自动检测失效连接,pool_timeout=30 防止长时间阻塞。results = await asyncio.gather(task1, task2) # 并行触发两个查询。await io_operation() # → 遇到第一个await,挂起task1。await io_operation() # → 挂起task2。
2025-06-18 14:31:57
724
原创 fastAPI+mongodb如何处理id的输入输出以及字段映射?
fastAPI端在创建一个类时,只能使用id而不能使用_id作为字段(当你使用pydantic这不符合它的验证)1 处理输入,在mongodb.insert_one()时,不会增加新的名为id的字段。2 处理输出,在mongodb.find()时,从API返回的id不再是_id。的作用:该方法生成字典时,键名会保留模型的 原始字段名(而非别名)而mongodb在数据库中生成的id为_id,且为object类型。后,对象的属性名会 完全继承字典的键名。这样,在转换返回值的时候,调用类中的。
2025-06-18 11:44:39
775
原创 python 中 model_dump是做什么的?
collection.insert_one(item.model_dump(by_alias=True)) # 正确生成 _id 字段:ml-citation{ref="1" data="citationList"}data_dict = item.model_dump() # 输出示例:{"_id": "658ff3e1a1b2c", "name": "示例"}mongodb_data = item.model_dump(by_alias=True) # 强制输出别名字段。#API 响应生成。
2025-06-18 08:36:35
963
原创 mongodb+fastAPI用类做api接收体时处理id的输入输出
BeforeValidator(str) 在pydantic基础验证前强制转换为str类型。#Annotated:声明当前为str类型。#处理输入,id转为_id插入。#处理输出,_id转为id输出。
2025-06-17 11:08:26
169
原创 fastAPI+mongoDB处理id的获取
PyObjectId = Annotated[str, BeforeValidator(str)] # 自动将ObjectId转为字符串。id: PyObjectId = Field(alias="_id") # 映射MongoDB的_id字段。json_encoders = {ObjectId: str} # 确保序列化兼容性。mongodb中的存储格式ObjectId。
2025-06-16 14:00:33
232
原创 fastAPI+mongoDB批量更新遇到的问题
原因是需要采用新版本pgmogo写法,新版本PyMongo对批量操作格式要求更严格,建议检查版本并调整语法结构。
2025-06-16 13:52:48
171
原创 python+fastAPI统一封装返回值(已测试可用)
response.body_iterator = iter([body]) # 重置迭代器。response.body_iterator = iter([body]) # 重置迭代器。body_data = body.decode() # 非JSON则保留原始数据。body_data = body.decode() # 非JSON则保留原始数据。frame.f_code.co_name == 'dispatch' # 常见中间件入口方法。如果想过滤掉其中的某个路径信息,可以这样写。
2025-06-16 13:49:46
615
原创 python基础之 如何处理返回值与类的字段不能一一匹配?
说明 报错Field required [type=missing, xxxx, input_type=dict]是说明使用 Pydantic 模型验证 MongoDB 文档数据时,目标类中存在必填字段未被赋值,解决方案是将未匹配值附上默认值。_db_collection.find({}, {'_id': 0, 'required_field': 1}) # 仅返回指定字段。self._handle_extra_fields(kwargs) # 处理多余字段。#这会自动过滤掉类中未定义的字段。
2025-06-15 08:40:22
312
原创 python基础之 获取属性何时用下标何时用.?
print(p[0]) # 报错: 'Page' object is not subscriptable。print(num[0]) # 报错: 'int' not subscriptable。字典(dict):my_dict["key"](通过键而非数字下标)字符串(str):"hello"[0] → 'h'NumPy数组:支持多维下标 arr[1,2]元组(tuple):my_tuple[1]列表(list):my_list[0]类实例的方法:obj.method()
2025-06-15 08:21:56
328
原创 网页端 VUE+C#/FastAPI获取客户端IP和hostname
2 网页端hotsname和username获取不到,只能获取到服务端,这是因为JavaScript的浏览器机制导致的。目前如下只有一种方案(未测试,供参考),否则需要用户显示输入。hostname = socket.gethostbyaddr(client_ip)[0] # IP反向解析。#关键,加客户端真实IP到请求头,用于后端服务获取原始访问者IP。#这个方案是从ip反向解析hostname,不过需要内网环境配置。1 IP可以获取,但是发现获取到的是服务端的IP,如何解决呢。
2025-06-06 08:53:56
512
原创 关于ETL的BackgroundScheduler同步方案和misfire_grace_time
如果做ETL避免脏数据,那么不可以允许同一个job有并行允许的情况,也就是说max_instance参数始终设置成1。那么 8:00:00~8:00:40正常执行,8:00:30的任务被丢弃,下次执行时间是8:01:00。如果下一个时间点上一次任务还没有执行完,那么这个时间点的任务会被直接丢弃。综上,如果需要排队发送,也就是说如果超时立即发送,那么请选用Queue,kafka等队列。比如:间隔时间30秒,任务执行周期40秒,开始时间8:00:00。这时候执行ETL任务,会有以下情况。(即预设的执行时间)
2025-06-06 08:41:35
338
原创 什么情况下视为跨域?
fetch("https://api.service.com/data") // 若前端页面域名为 www.client.com → 跨域。本质原因:跨域是浏览器的安全机制(同源策略),仅影响前端脚本(如 Ajax)对响应数据的读取。域名(Domain Name) 是互联网中用于代替复杂IP地址的易记名称,相当于网站的“门牌号”。www.example.com 与 api.example.com 属于不同域,触发跨域。完整域名 = 主机名.子域名.二级域.顶级域(实际可省略部分层级)。
2025-06-04 06:57:08
667
原创 resolvers: [ElementPlusResolver()] 有什么用?
效果: 你无需在 .vue 文件中手动 import { ElButton } from 'element-plus' 和 import 'element-plus/es/components/button/style/css'。优化的打包体积: 通过按需导入,构建工具(如 Vite、Webpack)只打包项目中实际用到的组件和 API 的代码及其样式,避免了引入整个庞大的 Element Plus 库所带来的体积浪费,显著减小最终产物的文件大小。这个组件的源文件路径在哪里。
2025-06-03 14:04:29
631
原创 关于BackgroundScheduler的pause
当在add_job()方法中使用时(如 scheduler.add_job(..., paused=True))需单独调用job.resume()或scheduler.resume_job(job_id)激活该作业。⚠️ 两者可独立使用:调度器运行状态和作业暂停状态互不影响(如调度器运行时仍可存在暂停的作业)。当在start()方法中使用时(如 scheduler.start(paused=True))表示该特定作业创建后即为暂停状态,即使调度器正在运行也不会触发该作业。
2025-06-02 14:55:03
217
原创 Python+MongoDb使用手册(精简)
{"age": {"$gt": 25}, "city": "New York"} # 隐式 AND:ml-citation{ref="5" data="citationList"} {"$and": [{"age": {"$gt": 25}}, {"city": "New York"}]} # 显式 AND。{"$match": {"$and": [{"age": {"$gte": 30}}, {"sales": {"$gt": 10000}}]}}, # 必须同时满足。
2025-06-01 15:04:54
1109
原创 python中global关键字的使用
return get_collection().find_one({}) # 安全访问。init_db() print(collection) # 输出集合对象 (全局变量已被修改)collection = ... # 修改的是file2的collection副本。def init_db(): global collection # 声明引用全局变量。print(collection) # 输出 None (全局变量未被修改)global collection # 声明的是file2的全局变量。
2025-06-01 10:43:36
762
原创 使用FastAPI+Sqlalchemy从一个数据库向另一个数据库更新数据(sql语句版)
print(f"通过原生SQL语句完成 {len(src_data)} 条记录更新")# 配置数据库连接(示例为PostgreSQL->MySQL)# 从源数据库查询数据(使用原生SQL)# 构建批量更新SQL语句。
2025-05-30 11:31:00
484
原创 AsyncIOScheduler与BackgroundScheduler的线程模型对比
【代码】AsyncIOScheduler与BackgroundScheduler的线程模型对比。
2025-05-30 10:58:15
916
原创 FastAPI正常退出和非正常退出时退出代码的执行
os._exit(0) # 触发 shutdown 事件:ml-citation{ref="5,10" data="citationList"}print("🧹 执行清理操作") # 退出时执行:ml-citation{ref="4,10" data="citationList"}stopasgroup=true # 终止时连带子进程清理:ml-citation{ref="3" data="citationList"}测试脚本退出:使用 pytest 等框架测试完成后,自动关闭测试服务器实例。
2025-05-30 10:55:14
1226
原创 Python基础-类
def __init__(self, name)#构造方法。__init__(self) self必须,代表类的实例。self.name = name # 实例属性。特殊方法 __{方法名}__class Cat: #关键字。D.A_a() # 输出: C。D.B_b() # 输出: C。实例属性:类的对象共有。子类使用父类的属性和方法。1 关键字:class。
2025-05-30 09:03:59
232
原创 fastapi+backgroundscheduler处理skipped: maximum number of running instances reached (1)
并发实例限制触发APScheduler默认,当任务执行时间超过间隔时间(如30秒)时,新触发的实例会被拒绝。任务执行时间过长就是当同一个job(同一job_id)上一次执行的程序还没有执行完,下一次的trigger就来了,导致不能并行的执行多次,从而阻塞解决方案分析:这里和两个参数有关这个参数可以允许同一job在同时并行,就算上次的没结束,也可以新开一个线程去处理新来的请求控制的是每个实例会占用线程池中的一个线程#即使线程池有空闲线程,该任务最多同时运行2个实例。
2025-05-30 08:09:37
1052
原创 fastapi中使用backgroundscheduler+mongodb问题及解决方案
active_jobs = [job.__getstate__() for job in scheduler.get_jobs()] #查询count=0。active_jobs = [job.__getstate__() for job in scheduler.get_jobs()] #查询count=3。问题原因:因为数据库中的next_run_time已过期(非实践,资料查询得来)问题1 数据库中有上次中断的job信息但是用get_job()方法查不到。重新暂停+运行scheduler。
2025-05-30 07:40:12
207
原创 FastAPI集成APsecheduler的BackgroundScheduler+mongodb(精简)
kwargs=jobconfig.trigger_kwargs,#特殊说明:这里可以添加自定义参数。print("写入文件"+ str(datetime.now()), file=file)#特殊说明:replace_existing=True会覆盖同名的JOB,但不影响数据库中的。#特殊说明:yield中可以监控到正常结束比如ctrl+c,异常结束不能执行yield后代码。#特殊说明:此处显示指定DB,会在DB里创建数据库apscheduler_db。5 测试,调用test方法。
2025-05-29 11:47:26
642
原创 处理python代码.gitignore处理不掉的文件办法
git rm -r --cached **/__pycache__/ #忽略所有同名文件夹可使用通配符**git rm -r --cached '**/*.pyc' #忽略所有同名文件可使用通配符**/*git rm --cached <文件名> # 移除文件缓存使其变为未追踪状态。2. 需要代码中通过.gitignore文件去掉对M状态文件的跟踪,需要以下步骤。3. 在.gitignore文件中添加对应的文件名或文件夹名。git add . # 重新应用.gitignore规则。
2025-05-29 11:28:22
261
原创 VUE3+VITE配置解析
extensions: ['.ts', '.js', '.vue', '.json'] // 添加TS扩展名优先级:ml-citation{ref="6" data="citationList"}Vite.config.ts中。
2025-05-23 08:44:12
207
原创 配置python+fastAPI代码使用启动按钮启动
4 选中 Python 3.12.2('venv':venv)用虚拟环境启动。5 点击左侧create a launch.json file。3 选中Python:Select Interpreter。2 ctrl+shift+P打开配置窗口。6 选中python debugger。1 main.py中配置启动代码。8 选择 main.py。7 选中FastAPI。
2025-05-23 08:20:39
382
原创 FastAPI中使用SQLALchemy配置步骤(mongodb/postgresql)
postgresql连接池(注意这里用create_async_engine,async_sessionmaker支持异步)4 配置config.py,注意postgresql这里用asyncpg支持异步。新建routers文件夹,routes文件夹下新建__init__.py文件。新建api文件夹,api文件夹下新建transfermogodb.py文件。3 文件夹core下新建config.py文件,保存db基本信息。6 utils文件夹下新建database.py文件,配置连接池。
2025-05-23 08:11:44
603
原创 快速创建一个FastAPI项目(精简)
2 运行虚拟环境(command prompt)1 创建虚拟环境(power shell)6 app文件夹下创建main.py。5 虚拟环境同目录创建app文件夹。3 虚拟环境下安装fastapi。4 虚拟环境下安装uvicorn。mian.py 添加如下代码。7 配置main.py。9 配置swagger。
2025-05-22 11:05:47
418
原创 Vite+VUE3+TypeScript开发环境配置流程(精简)
alias:[{find:"@",replacement:resolve(__dirname,'src')}] //src文件夹用@替代。7 配置vue模块声明(vite-env.d.ts中添加,不添加npm run dev会报错)新建utils文件夹>新建request.ts文件>配置request.ts。新建router文件夹>新建index.ts>配置index.ts。新建api文件夹>新建useapi.ts>配置useapi.ts。5 配置vite.config.ts。10 配置router。
2025-05-22 09:01:29
762
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅