Python使用SQLite3在C盘创建数据库失败,报错无法打开数据库文件
解决SQLite在C盘创建数据库报错"unable to open database file"的问题
嘿,这个问题我之前帮不少人排查过,主要是三个常见的坑,咱们一步步捋明白:
1. 路径转义字符搞出的乌龙
Python里的字符串反斜杠\是转义符号,你写的"C:\sqlite\db\store.db"里,\s和\d会被当成特殊字符解析,导致实际路径根本不是你预想的C:\sqlite\db\store.db。
解决办法三选一即可:
- 用原始字符串,在路径前加
r:database_src = r"C:\sqlite\db\store.db" - 用双反斜杠代替单反斜杠:
database_src = "C:\\sqlite\\db\\store.db" - 用正斜杠(Python跨平台都支持):
database_src = "C:/sqlite/db/store.db"
2. 目标目录压根不存在
SQLite只会自动创建数据库文件,但不会帮你生成上级目录。如果C:\sqlite\db这个文件夹还没创建,直接写数据库文件肯定会报错。
解决办法:在创建连接前先检查并创建目录,修改代码如下:
import sqlite3 import os from sqlite3 import Error def create_connection(db_file): """ create a database connection to the SQLite database specified by the db_file :param db_file: database file :return: Connection object or None """ # 先创建上级目录(如果不存在) dir_path = os.path.dirname(db_file) if dir_path and not os.path.exists(dir_path): os.makedirs(dir_path) try: conn = sqlite3.connect(db_file) print("数据库连接成功!") return conn except Error as e: print(e) return None def main(): # 用原始字符串修正路径 database_src = r"C:\sqlite\db\store.db" create_connection(database_src) if __name__ == '__main__': main()
3. Windows权限限制拦了你的操作
C盘根目录下的文件夹默认受UAC(用户账户控制)保护,普通用户没有写入权限。就算路径和目录都对,也会被系统拒绝写入。
解决办法二选一:
- 右键点击PyCharm,选择以管理员身份运行,再执行代码
- 把数据库路径改到你有权限的用户目录,比如:
database_src = r"C:\Users\你的用户名\sqlite\db\store.db"
(记得把“你的用户名”换成你实际的Windows用户名)
先试试路径转义的修正,这是最常见的原因,不行再排查目录和权限,应该就能搞定啦。
内容的提问来源于stack exchange,提问作者Mart
相关产品推荐
相关产品推荐

