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

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日

悬赏问题

  • ¥500 高有偿提问!求优化设计微信小程序
  • ¥15 matlab在安装时报错 无法找到入口 无法定位程序输入点
  • ¥15 收益高的广告联盟有哪些
  • ¥15 Android Studio webview 的使用问题, 播放器横屏全屏
  • ¥15 删掉jdk后重新下载,Java web所需要的eclipse无法使用
  • ¥15 uniapp正式环境中通过webapi将本地数据推送到设备出现的跨域问题
  • ¥15 xui建立节点,显示错误
  • ¥15 关于#单片机#的问题:开始、复位、十进制的功能可以实现,但是切换八进制的功能无法实现(按下按键也没有效果),把初始状态调成八进制,也是八进制可以实现但是切换到十进制不行(相关搜索:汇编语言|计数器)
  • ¥15 VINS-Mono或Fusion中feature_manager中estimated_depth是特征的深度还是逆深度?
  • ¥15 谷歌浏览器如何备份抖音网页数据