Repository navigation
embedded null byte when connecting to sqlite database using a bytes object #84335
Description
Activity
Hello. I think that I found a bug in how sqlite3 module handle bytes.
The connect function of sqlite3 accepts strings, FilePath objects and bytes. However, it's impossible for me to connect to bytes objects that are read from BufferedReaders. I always get:
"ValueError: embedded null byte"
This is my current code (byteDec is the BytesIO object):
==============================================
byteDec.seek(0) conn = sqlite3.connect(byteDec.read())
==============================================
That returns the "embedded null byte" error. However, if I do:
==============================================
byteDec.seek(0) with open("db.db", "wb" as f: f.write(byteDec.read()) conn = sqlite3.connect("db.db")
==============================================
Everything works flawlessly, so the BufferedReader that I have in-memory is not corrupted in any way, as it's readable from a file. I want to avoid writing to disk at all, so this is not a solution for me.
I attach to this issue a very basic proof of concept to understand the issue.
I'm running Pyhton 3.8.2 amd64 on Windows 10 1909
- addedtype-crashA hard crash of the interpreter, possibly with a core dumpA hard crash of the interpreter, possibly with a core dump3.8 (EOL)end of lifeend of life
on Apr 2, 2020 bump?
- addedextension-modulesC modules in the Modules dirC modules in the Modules dirand removed
on Apr 8, 2020 Hi Fernando,
the first parameter of the connect function is described in documentation as follows:
database is a path-like object giving the pathname (absolute or relative to the current working directory) of the database file to be opened. You can use ":memory:" to open a database connection to a database that resides in RAM instead of on disk.
So, while it can be a bytes object, it's still would be a bytes object representing a file-path. It's not bytes object representing a file content of the database.
Hope that helps.
- addedtype-bugAn unexpected behavior, bug, or errorAn unexpected behavior, bug, or errorand removedtype-crashA hard crash of the interpreter, possibly with a core dumpA hard crash of the interpreter, possibly with a core dump
on Apr 8, 2020 - addedtype-bugAn unexpected behavior, bug, or errorAn unexpected behavior, bug, or errorand removedtype-crashA hard crash of the interpreter, possibly with a core dumpA hard crash of the interpreter, possibly with a core dump
on Apr 8, 2020 Hello SilentGhost,
Okay, now I understand the difference and had my code working! Thank you very much for your answer and to all of you who help in making Python better.
(Wish I had more knowledge of it to help)
Have a nice day!
Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.
Show more details
GitHub fields:
bugs.python.org fields: