【发布时间】:2015-12-23 12:09:23
【问题描述】:
我正在尝试使用以下代码将我的 .sql 数据库与 python 版本 2.7.9 连接:
import sqlite3
db = sqlite3.connect("c:\\Users\\afsoon\\Desktop\\ch9learning\\sql\\genres.sql")
cursor = db.cursor()
query = """SELECT * FROM mytable where genre='folk'"""
lines = cursor.execute(query)
data = cursor.fetchall()
db.close()
但我发现了这个错误:
lines = cursor.execute(query)
Traceback (most recent call last):
File "<ipython-input-10-af02982f9f74>", line 1, in <module>
lines = cursor.execute(query)
DatabaseError: file is encrypted or is not a database
我在 windows 上,我有 sqlite3!
ps:这些是我的数据库第一行
-- phpMyAdmin SQL Dump
-- version 4.5.1
-- http://www.phpmyadmin.net
--
-- Host: 127.0.0.1
-- Generation Time: Dec 23, 2015 at 09:29 AM
-- Server version: 10.1.9-MariaDB
-- PHP Version: 5.6.15
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
--
-- Database: `genres`
--
CREATE DATABASE IF NOT EXISTS `genres` DEFAULT CHARACTER SET utf8 COLLATE utf8_persian_ci;
USE `genres`;
-- --------------------------------------------------------
--
-- Table structure for table `mytable`
--
CREATE TABLE `mytable` (
`genre` varchar(640) COLLATE utf8_persian_ci DEFAULT NULL,
`track_id` varchar(50) COLLATE utf8_persian_ci DEFAULT NULL,
`artist_name` varchar(248) COLLATE utf8_persian_ci DEFAULT NULL,
`title` varchar(248) COLLATE utf8_persian_ci DEFAULT NULL,
`keyy` decimal(13,10) DEFAULT NULL,
`modee` decimal(13,10) DEFAULT NULL,
`duration` decimal(14,10) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_persian_ci;
--
-- Dumping data for table `mytable`
【问题讨论】:
-
您确定该文件存在吗?路径是否正确?您是否需要路径名中的双斜杠(不是 Python 专家)?
-
好吧,就像错误所说的那样,该文件似乎不是数据库。你确定是吗?以 .sql 结尾的文件名通常是数据库转储或一系列 SQL 命令,而不是实际的可查询数据库。
-
是的,我刚刚在 phpmyadmin 中创建了它,然后导出为 sql 格式。如何将其更改为 SQLite 3 数据库????
-
是的,没错,它不是 SQlite3 数据库!我也不是 python 专家!我可以随时改变吗?