【发布时间】:2020-03-12 18:45:41
【问题描述】:
我的主目录中有一个 sqlite 数据库。
stephen@stephen-AO725:~$ pwd
/home/stephen
stephen@stephen-AO725:~$ sqlite db1
SQLite version 2.8.17
Enter ".help" for instructions
sqlite> select * from test
...> ;
3|4
5|6
sqlite> .quit
当我尝试使用 sqlalchemy 和 pandas 从 jupiter notebook 连接时,某事不起作用。
db=sqla.create_engine('sqlite:////home/stephen/db1')
pd.read_sql('select * from db1.test',db)
~/anaconda3/lib/python3.7/site-packages/sqlalchemy/engine/default.py in do_execute(self, cursor, statement, parameters, context) 578 第579章 --> 580 cursor.execute(语句,参数) 581 582 def do_execute_no_params(self, cursor, statement, context=None)
DatabaseError: (sqlite3.DatabaseError) 文件不是数据库 [SQL:从 db1.test 中选择 *] (此错误的背景:http://sqlalche.me/e/4xp6)
我也试过了:
db=sqla.create_engine('sqlite:///~/db1')
同样的结果
【问题讨论】:
-
URL 应该有 3 个斜杠,而不是 4 个。
-
@klaus 4 是正确的,如果使用绝对路径。
sqlite://,后面是不存在的主机,然后是分隔符/,最后是路径:docs.sqlalchemy.org/en/13/dialects/sqlite.html#connect-strings -
查看控制台输出
SQLite version 2.8.17伸出。我认为 Python 驱动程序适用于 SQLite 3.x,因此可能无法打开您的数据库文件。 -
根据帮助页面,url 应该有 4 个斜杠。
标签: python sqlite sqlalchemy