搞事儿布 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日

悬赏问题

  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能