Найти - Пользователи
Полная версия: sqlite3 не комитит в wsgi приложении
Начало » Web » sqlite3 не комитит в wsgi приложении
1
o7412369815963
wsgi приложение
# coding: utf-8

import sys
import os
import sqlite3

g_basePath = os.path.dirname(__file__)
sys.path.append(g_basePath)
os.chdir(g_basePath)

def application(environ, start_response):
status = '200 OK'

con = sqlite3.connect('webb.db')
c = con.cursor()
c.execute('select * from users')
output = str( c.fetchall() )

c.execute('update users set auto=0')
con.commit()

response_headers = [('Content-type', 'text/html; charset=utf-8'),
('Content-Length', str(len(output)))]
start_response(status, response_headers)

return [output]
права на бд
user@user-desktop:/var/www/main$ ls -l webb.db 
-rwxrwxrwx 1 user user 9216 2010-01-27 22:52 webb.db
ошибка в логах апача
[Thu Jan 28 00:21:02 2010] [error] [client 92.255.165.89] Traceback (most recent call last):
[Thu Jan 28 00:21:02 2010] [error] [client 92.255.165.89] File "/var/www/main/main.wsgi", line 19, in application
[Thu Jan 28 00:21:02 2010] [error] [client 92.255.165.89] c.execute('update users set auto=0')
[Thu Jan 28 00:21:02 2010] [error] [client 92.255.165.89] OperationalError: unable to open database file
ошибка: не возможно открыть БД, хотя селект перед этим нормальн отрабатывается и права на файл бд все есть
в чем проблемма? написал сайт, начал выкладывать, а тут на те… :(
o7412369815963
разобрался, нужно было ещё права на запись папке, в которой этот файл БД лежал, дать
bw
Ну да, он же журнал создает.
Хотя, если попробовать “PRAGMA journal_mode = PERSIST;” сделать после открытия базы, то журнал удаляться не будет, а значит и не потребуются права на создания файла в этой папке. Это к вопросу о безопасности, хочешь ли ограничить права своего кода на запись. Ну работать будет быстрее на 0.5-1.0%% (может быть :-), хотя не мерил.

..bw
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB