Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Web
  • » sqlite3 не комитит в wsgi приложении [RSS Feed]

#1 Янв. 27, 2010 21:27:28

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

sqlite3 не комитит в wsgi приложении

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
ошибка: не возможно открыть БД, хотя селект перед этим нормальн отрабатывается и права на файл бд все есть
в чем проблемма? написал сайт, начал выкладывать, а тут на те… :(

Офлайн

#2 Янв. 27, 2010 21:35:47

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

sqlite3 не комитит в wsgi приложении

разобрался, нужно было ещё права на запись папке, в которой этот файл БД лежал, дать

Офлайн

#3 Янв. 28, 2010 07:08:57

bw
От:
Зарегистрирован: 2007-09-26
Сообщения: 938
Репутация: +  20  -
Профиль   Адрес электронной почты  

sqlite3 не комитит в wsgi приложении

Ну да, он же журнал создает.
Хотя, если попробовать “PRAGMA journal_mode = PERSIST;” сделать после открытия базы, то журнал удаляться не будет, а значит и не потребуются права на создания файла в этой папке. Это к вопросу о безопасности, хочешь ли ограничить права своего кода на запись. Ну работать будет быстрее на 0.5-1.0%% (может быть :-), хотя не мерил.

..bw



Офлайн

  • Начало
  • » Web
  • » sqlite3 не комитит в wsgi приложении[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version