sqlite db with non-ascii characters in path
Issue #3089
wontfix
If you have a database path with non-ascii characters (e.g., "Á"), then sqlalchemy will fail with: "unable to open database file None None"
Python's sqlite3 also exhibits this behavior. However, you can workaround this in sqlite3 by doing:
import sqlite3, os
os.chdir("/path/with/non/ascii/character")
conn = sqlite3.connect("file.db")
This does not work with sqlalchemy, however, because the create_connect_args() method in sqlalchemy\dialects\sqlite\pysqlite3.py has the following code where an absolute path is always provided to sqlite:
if filename != ':memory:':
filename = os.path.abspath(filename)
If this code is removed, then the workaround works as expected.
That said, it will not resolve the issue of non-ascii characters in the filename itself, just the path.
Comments (3)
-
repo owner -
reporter For what it's worth, I hit this issue with python 2.7.5.
-
repo owner - changed status to wontfix
workaround is enough for now
- Log in to comment
the abspath is from
#2036, if the application changes the current directory then the URL fails.As this is an upstream bug with an easy workaround (use
create_engine("sqlite://", creator=lambda: sqlite3.connect("whatever"))
) I am -1 on SQLAlchemy getting into this. Python's issues with non-unicode filepaths (is this on Py3K at least? my understanding is that Py2k doesn't have issues like this) are a much bigger issue than SQLAlchemy.