スクリプト(snapshot.dbとsync_conf.db)を介して同期フォルダをリダイレクトするためにGoogleドライブで使用される2つのデータベースファイルを変更しようとしています。特定のsqliteブラウザ(すべてではない)でファイルを開くことはできますが、Pythonでクエリを実行することはできません。私はただメッセージを受け取ります:sqlite3.DatabaseError: file is encrypted or is not a database
どうやらグーグルはデータベースでログ先行書き込み(WAL)構成を使用しており、データベースに対して(sqlite.orgによると)実行することでオフにすることができますがPRAGMA journal_mode=DELETE;
、データベースに対してそれを実行する方法がわかりませんPythonがそれを読み取れない場合。
これが私が持っているものです(PRAGMAコマンドを実行し、コミットしてから再度開いてみましたが、機能しませんでした):
import sqlite3
snapShot = 'C:\Documents and Settings\user\Local Settings\Application Data\Google\Drive\snapshot.db'
sync_conf = 'C:\Documents and Settings\user\Local Settings\Application Data\Google\Drive\sync_config.db'
sync_folder_path = 'H:\Google Drive'
conn = sqlite3.connect(snapShot)
cursor = conn.cursor()
#cursor.execute('PRAGMA journal_mode=DELETE;')
#conn.commit()
#conn= sqlite3.connect(snapShot)
#cursor = conn.cursor()
query = "UPDATE local_entry SET filename = '\\?\\" + sync_folder_path +"' WHERE filename ='\\?\C:Users\\admin\Google Drive'"
print query
cursor.execute(query)