将SQLite数据库表读入Python

时间:2017-09-07 22:19:40

标签: python database sqlite

我无法从位于与我工作的Jupyter笔记本相同的目录中的sqlite数据库中将数据读入Python。

错误消息(下面)让我相信数据库中不存在表 Player_Attributes ,但在使用DB Browser for SQLite进行探索后,我发现确实存在。

任何指导都将不胜感激。

代码:

cnx = sqlite3.connect('database.sqlite')
df = pd.read_sql_query('SELECT * FROM Player_Attributes', cnx)

错误讯息:

--------------------------------------------------------------------------- OperationalError                          Traceback (most recent call last) /home/captain/anaconda3/lib/python3.5/site-packages/pandas/io/sql.py in execute(self, *args, **kwargs)    1403             else:
-> 1404                 cur.execute(*args)    1405             return cur

OperationalError: no such table: Player_Attributes

During handling of the above exception, another exception occurred:

DatabaseError                             Traceback (most recent call last) <ipython-input-4-c51fe6ea9537> in <module>()
      5 
      6 cnx = sqlite3.connect('database.sqlite')
----> 7 df = pd.read_sql_query('SELECT * FROM Player_Attributes', cnx)

/home/captain/anaconda3/lib/python3.5/site-packages/pandas/io/sql.py in read_sql_query(sql, con, index_col, coerce_float, params, parse_dates, chunksize)
    330     return pandas_sql.read_query(
    331         sql, index_col=index_col, params=params, coerce_float=coerce_float,
--> 332         parse_dates=parse_dates, chunksize=chunksize)
    333 
    334 

/home/captain/anaconda3/lib/python3.5/site-packages/pandas/io/sql.py in read_query(self, sql, index_col, coerce_float, params, parse_dates, chunksize)    1437     1438         args = _convert_params(sql, params)
-> 1439         cursor = self.execute(*args)    1440         columns = [col_desc[0] for col_desc in cursor.description]    1441 

/home/captain/anaconda3/lib/python3.5/site-packages/pandas/io/sql.py in execute(self, *args, **kwargs)    1414             ex = DatabaseError(    1415                 "Execution failed on sql '%s': %s" % (args[0], exc))
-> 1416             raise_with_traceback(ex)    1417     1418     @staticmethod

/home/captain/anaconda3/lib/python3.5/site-packages/pandas/compat/__init__.py in raise_with_traceback(exc, traceback)
    342         if traceback == Ellipsis:
    343             _, _, traceback = sys.exc_info()
--> 344         raise exc.with_traceback(traceback)
    345 else:
    346     # this version of raise is a syntax error in Python 3

/home/captain/anaconda3/lib/python3.5/site-packages/pandas/io/sql.py in execute(self, *args, **kwargs)    1402                 cur.execute(*args, **kwargs)    1403             else:
-> 1404                 cur.execute(*args)    1405             return cur    1406         except Exception as exc:

DatabaseError: Execution failed on sql 'SELECT * FROM Player_Attributes': no such table: Player_Attributes

1 个答案:

答案 0 :(得分:0)

cnx = sqlite3.connect('database.sqlite')

在这一行中,您不仅要指定文档名称,还必须提供文件的完整路径。