问题:使用达梦管理工具删除表时报锁超时

解决:删除涉及的session

方法:

1、查询所有session

select * from v$sessions;

2、根据结果,找到相应的sess_id,然后删除此session

SP_CLOSE_SESSION(140359600702024);

拓展:

1、导入数据时,一直卡着不动,可能只是因为锁住了

2、程序中一条sql语句,在开发环境可以正常运行,但在生产环境,运行多次后会报错sqlalchemy.exc.DatabaseError: (dmPython.DatabaseError) [CODE:-608]请求执行超时,也可能是因为此sql语句被锁住了

问题:达梦库,sqlalchemy中非主键使用自增时,会报错

解决:在sqlalchemy中指定自增列为主键

方法:

class User(Base, BaseMixin):

__tablename__ = "YH"
# 使用mysql时,BH字段可以使用unique=True代替primary_key=True,
# 但达梦必须指定为primary_key=True,但建表时此字段还是唯一索引
BH = Column(Integer, primary_key=True, autoincrement=True)
BM = Column(String(19), nullable=False, primary_key=True)

问题:使用fastapi框架时,如何进行文件上传?

方法:

方法一

import shutil
from fastapi import FastAPI, File, UploadFile  

app = FastAPI()

@app.post("/uploadfile/")
async def create_upload_file(file: UploadFile = File(...)):
    # 这里可以添加保存文件的逻辑
    # 例如,使用 Python 的内置 open() 函数将文件保存到服务器
    # 注意:出于安全考虑,您应该验证文件类型和大小
    with open(file.filename, "wb") as buffer:  
        shutil.copyfileobj(file.file, buffer)  

    return {"filename": file.filename}

阅读全文

问题:按名称排序,如果名称是数字时,10比2排在前面

解决:order by 时name+1

方法:

select * from classes order by name+1 asc, id asc limit 0, 10;

注:增加“id asc”是因为防止order by和limit一起使用时出错排序错乱

阅读全文