使用Python连接SQLite数据库失败:数据库文件未生成求助
解决SQLite数据库文件找不到的问题
1. 先定位路径问题
- 当你使用
sqlite3.connect("Address.db")时,数据库文件会自动创建在Python脚本的当前工作目录中。你可以先打印当前目录确认位置,在代码里添加:
运行后查看输出的路径,数据库文件就存放在这个目录下。import os print("当前工作目录:", os.getcwd()) - 如果你想指定固定位置(比如桌面),直接写绝对路径即可:
注意别用未定义的# Windows系统示例 conn = sqlite3.connect("C:/Users/你的用户名/Desktop/Address.db") # macOS/Linux系统示例 conn = sqlite3.connect("/Users/你的用户名/Desktop/Address.db")path变量,这会直接触发报错,导致数据库文件根本无法创建。
2. 修复代码中的关键问题
你的代码存在事务提交缺失、异常处理宽泛的问题,修改后如下:
from tkinter import * from PIL import ImageTk,Image import sqlite3 import os # 打印当前工作目录,方便查找文件 print("当前工作目录:", os.getcwd()) root=Tk() root.title("Hello") root.geometry("400x400") conn = None try: # 使用当前目录创建数据库,或替换为你想指定的绝对路径 conn = sqlite3.connect("Address.db") c = conn.cursor() # 加IF NOT EXISTS避免重复创建表报错 c.execute('''CREATE TABLE IF NOT EXISTS contacts ( fName TEXT, lName text, address text, city text, state text, zipCode integer);''') conn.commit() # 必须提交事务,否则操作不会写入磁盘 print('table created successfully') except sqlite3.Error as e: print(f'数据库操作错误: {e}') if conn: conn.rollback() except Exception as e: print(f'其他错误: {e}') finally: # 确保连接最终关闭 if conn: conn.close() root.mainloop()
- 添加
CREATE TABLE IF NOT EXISTS,避免重复运行代码时因表已存在报错 - 调用
conn.commit()提交事务,否则创建表的操作不会被写入磁盘 - 捕获具体异常类型,能明确看到问题根源(比如路径错误、变量未定义等)
3. 验证数据库文件
运行修改后的代码后,前往打印的当前工作目录,就能找到Address.db文件,直接用SQLite Browser打开即可查看创建的表。
内容的提问来源于stack exchange,提问作者Kar_D
相关产品推荐
相关产品推荐

