搞事儿布 2022-09-25 19:58 采纳率: 75%
浏览 19
已结题

sqlite插入语句在linux服务器上报错

这是查询语句 这个正常

@app.route('/select',methods=['POST'])
def selects():
    name =request.form.get("name")
    con = sqlite3.connect("liuyan.db")  # 建立数据库连接
    con.row_factory = sqlite3.Row  # 设置row_factory,对查询到的数据,通过字段名获取列数据
    cur = con.cursor()  # 获取游标
    cur.execute("select * from card where name=? ",(name,))  # 执行sql语句选择数据表
    rows = cur.fetchall()  # 获取多条记录数据
    con.close()
    return render_template('cha.html', rows=rows)
@app.route('/add',methods=['POST'])
def adds():
    name=request.form.get("name")#获取前端送过来的name数据
    text=request.form.get("text")#获取内容
    tim=time.strftime('%Y-%m-%d %H:%M:%S',time.localtime())#时间格式
    con =sqlite3.connect("liuyan.db")#连接数据库
    cur =con.cursor()
    cur.execute("insert into card (name,text,time) values (?,?,?)",(name,text,tim))#向数据库插入一条记录
    con.commit()
    con.close()
    return render_template('add.html' )

上面这个插入字段的方法 在电脑上运行不报错 放到服务器上 就报错
[2022-09-25 19:42:47,336] ERROR in app: Exception on /add [POST]
Traceback (most recent call last):
File "/www/wwwroot/ly/0cc86c81b505708557e3c341463968c2_venv/lib/python3.9/site-packages/flask/app.py", line 2525, in wsgi_app
response = self.full_dispatch_request()
File "/www/wwwroot/ly/0cc86c81b505708557e3c341463968c2_venv/lib/python3.9/site-packages/flask/app.py", line 1822, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/www/wwwroot/ly/0cc86c81b505708557e3c341463968c2_venv/lib/python3.9/site-packages/flask/app.py", line 1820, in full_dispatch_request
rv = self.dispatch_request()
File "/www/wwwroot/ly/0cc86c81b505708557e3c341463968c2_venv/lib/python3.9/site-packages/flask/app.py", line 1796, in dispatch_request
return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)
File "/www/wwwroot/ly/main.py", line 28, in adds
cur.execute("insert into card (name,text,time) values (?,?,?)",(name,text,tim))#向数据库插入一条记录
sqlite3.OperationalError: unable to open database file

  • 写回答

1条回答 默认 最新

  • JiaoEleven 2022-09-26 11:19
    关注

    sqlite3.OperationalError: unable to open database file
    无法连接数据库
    报错的原因有以下几种:
    1:文件路径中存在中文,需要把文件移动到一个全英文目录中
    2::数据库路改成绝对路径,并且目录要存在
    3:数据库会自动建立,之前自己多此一举的建了个数据库,所以有权限问题。
    4: 一般在settings.py中配置name路径的时候,如果不具体指到某个盘符,对应的文件夹要在该项目中存在。
    5: 请将装xx.db的文件夹改成可读写(去掉只读)
    6: 用sqlite3 配置文件中的user,password和host都可以默认为空

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 10月10日
  • 已采纳回答 10月2日
  • 创建了问题 9月25日

悬赏问题

  • ¥15 有没有人知道这个问题怎么解决
  • ¥15 comsol电力电缆载流量仿真
  • ¥15 webSocket可以接TCP socket接口吗
  • ¥60 mpi并行出错,CFD++计算
  • ¥15 c#:vsto,powerpoint的外接程序中换主题颜色
  • ¥15 状态机/汽车转向灯/Sateflow
  • ¥15 这个有点复杂 有没有人看看
  • ¥15 用python如何确定子孙元素在父元素中的位置
  • ¥15 obj文件滤除异常高程
  • ¥15 用mathematicas或者matlab计算三重积分