DatabaseError: file is encrypted or is not a database
DatabaseError: file is encrypted or is not a database
我正在尝试使用以下代码将我的 .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!
p.s: 这些是我的数据库第一行
-- 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`
您必须将数据导入 SQLite。由于您的文件是 MySQL 的导出文件,因此可能存在导入问题,您可能需要手动修复某些行。
但基本上您必须创建一个新的 SQLite 数据库文件并导入您的 SQL。为此,您需要 sqlite3 二进制文件。 运行 在命令行上:
sqlite3 your_new_db.sqlite
sqlite> .read genres.sql
我正在尝试使用以下代码将我的 .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!
p.s: 这些是我的数据库第一行
-- 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`
您必须将数据导入 SQLite。由于您的文件是 MySQL 的导出文件,因此可能存在导入问题,您可能需要手动修复某些行。
但基本上您必须创建一个新的 SQLite 数据库文件并导入您的 SQL。为此,您需要 sqlite3 二进制文件。 运行 在命令行上:
sqlite3 your_new_db.sqlite
sqlite> .read genres.sql