I want to open a .db-file from python to inspect it. I can open it from a terminal,
JavaScript
x
6
1
% sqlite3 scrapy_quotes.db
2
sqlite> .tables
3
author quote quote_tag tag
4
sqlite> select * from quote limit 3
5
6
but from a python-script it only shows an empty file,
JavaScript
1
6
1
from sqlalchemy import create_engine, inspect
2
engine = create_engine('sqlite:///scrapy_quotes.db')
3
insp = inspect(engine)
4
print(insp.get_table_names())
5
[]
6
while this script does work for another .db-file.
JavaScript
1
9
1
from sqlalchemy import create_engine, inspect
2
engine = create_engine('sqlite:///chinook.db')
3
insp = inspect(engine)
4
print(insp.get_table_names())
5
['albums', 'artists', 'customers', 'employees', 'genres',
6
'invoice_items', 'invoices', 'media_types',
7
'playlist_track', 'playlists', 'sqlite_sequence',
8
'sqlite_stat1', 'tracks']
9
What is going on?
Advertisement
Answer
I cannot reproduce your error, are you sure the paths are right ?
JavaScript
1
7
1
import sqlite3
2
3
con = sqlite3.connect("/tmp/test.db")
4
con.execute("CREATE TABLE test (id INT)")
5
con.commit()
6
con.close()
7
JavaScript
1
5
1
from sqlalchemy import create_engine, inspect
2
3
engine = create_engine("sqlite:////tmp/test.db")
4
inspect(engine).get_table_names() # gives ['test']
5
JavaScript
1
7
1
% sqlite3 /tmp/test.db
2
SQLite version 3.32.3 2020-06-18 14:16:19
3
Enter ".help" for usage hints.
4
sqlite> .tables
5
test
6
sqlite> CREATE TABLE reverse (id INT);
7
JavaScript
1
5
1
from sqlalchemy import create_engine, inspect
2
3
engine = create_engine("sqlite:////tmp/test.db")
4
inspect(engine).get_table_names() # gives ['reverse', 'test']
5