LINUX.ORG.RU

[Python][SQLite][Offtopic] Соединение с БД

 , ,


0

1

Обьясните, пожалуйста, почему этот код работает в линуксе и не хочет под оффтопиком?

import tempfile, sqlite3

dbTempFile = tempfile.NamedTemporaryFile()

dbConnection = sqlite3.connect(dbTempFile.name) 
dbCursor = dbConnection.cursor()

Говорит не может открыть базу:

Traceback (most recent call last):

  File "G:\mmxdb.py", line 12, in 

    dbConnection = sqlite3.connect(dbTempFile.name)

OperationalError: unable to open database file

Может ему не нравятся сокращения в пути к файлу?

>>> dbTempFile.name

'c:\\docume~1\\max\\locals~1\\temp\\tmpv9lufk'
Как заменить на полный путь?

Как заменить на полный путь?

Может это и не проблема, вовсе? Временную базу данных можно сделать в памяти.

baverman ★★★
()

ыыыы, открывай в корне!

visual ★★★
()
Ответ на: комментарий от baverman

Про :memory: я вкурсе. Необходимо именно временный файл, потом его запаковать и сохранить в нормальном месте.
Просто я подумал, что сокращения в пути могут быть возможной причиной ошибки.

stormblastt ★★★
() автор топика

я где-то читал в интернетах что можно и прямые слэши в пути писать

anonymous
()
import tempfile
import sqlite3

fh, fname = tempfile.mkstemp()
conn = sqlite3.connect(fname) 
cursor = conn.cursor()

WinXP, python 2.7 работает

baverman ★★★
()
Ответ на: комментарий от stormblastt

Так у меня тоже заработало.

Нашел объяснение, почему с NamedTemporaryFile не работает:

Whether the name can be used to open the file a second time, while the named temporary file is still open, varies across platforms (it can be so used on Unix; it cannot on Windows NT or later).
baverman ★★★
()
Ответ на: комментарий от stormblastt

>Win XP SP3, Python 2.7.1

На винфаке проверь

Led ★★★☆☆
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.