在 Google Colab 中查询 SQLite 数据库文件

Posted

技术标签:

【中文标题】在 Google Colab 中查询 SQLite 数据库文件【英文标题】:Querying SQLite database file in Google Colab 【发布时间】:2018-10-31 20:50:57 【问题描述】:
print ('Files in Drive:')

!ls drive/AI

云端硬盘中的文件:

database.sqlite
Reviews.csv
Untitled0.ipynb
fine_food_reviews.ipynb
Titanic.csv

当我在 Google Colab 中运行上述代码时,很明显我的 sqlite 文件存在于我的驱动器中。但是每当我对这个文件运行一些查询时,它都会说

# using the SQLite Table to read data.
con = sqlite3.connect('database.sqlite') 

#filtering only positive and negative reviews i.e. 
# not taking into consideration those reviews with Score=3
filtered_data = pd.read_sql_query("SELECT * FROM Reviews WHERE Score !=3",con)

DatabaseError: sql 'SELECT * FROM Reviews WHERE 执行失败 Score != 3 ': 没有这样的表:评论

【问题讨论】:

【参考方案1】:

您将在下面找到地址db setup on the Colab VMtable creationdata insertiondata querying 的代码。在单个笔记本单元格中执行所有代码 sn-ps。

但请注意,此示例仅显示如何在非持久 Colab VM 上执行代码。如果您想将数据库保存到 GDrive,您必须先挂载您的 Gdrive (source):

from google.colab import drive
drive.mount('/content/gdrive')

和navigate之后到相应的文件目录。


第 1 步:创建数据库

import sqlite3

conn = sqlite3.connect('SQLite_Python.db')  # You can create a new database by changing the name within the quotes
c = conn.cursor() # The database will be saved in the location where your 'py' file is saved

# Create table - CLIENTS
c.execute('''CREATE TABLE SqliteDb_developers
             ([id] INTEGER PRIMARY KEY, [name] text, [email] text, [joining_date] date, [salary] integer)''')

conn.commit()

测试DB是否创建成功:

!ls

输出:

sample_data SQLite_Python.db


第 2 步:将数据插入数据库

import sqlite3

try:
    sqliteConnection = sqlite3.connect('SQLite_Python.db')
    cursor = sqliteConnection.cursor()
    print("Successfully Connected to SQLite")

    sqlite_insert_query = """INSERT INTO SqliteDb_developers
                          (id, name, email, joining_date, salary) 
                           VALUES (1,'Python','MakesYou@Fly.com','2020-01-01',1000)"""


    count = cursor.execute(sqlite_insert_query)
    sqliteConnection.commit()
    print("Record inserted successfully into SqliteDb_developers table ", cursor.rowcount)
    cursor.close()

except sqlite3.Error as error:
    print("Failed to insert data into sqlite table", error)
finally:
    if (sqliteConnection):
        sqliteConnection.close()
        print("The SQLite connection is closed")

输出:

成功连接到 SQLite

记录成功插入SqliteDb_developers表1

SQLite 连接已关闭


第 3 步:查询数据库

import sqlite3

conn = sqlite3.connect("SQLite_Python.db")

cur = conn.cursor()
cur.execute("SELECT * FROM SqliteDb_developers")

rows = cur.fetchall()

for row in rows:
  print(row)

conn.close()

输出:

(1, 'Python', 'MakesYou@Fly.com', '2020-01-01', 1000)

【讨论】:

【参考方案2】:

试试这个。看看那里有什么桌子。

"SELECT name FROM sqlite_master WHERE type='table'"

【讨论】:

filtered_data = pd.read_sql_query("SELECT name FROM sqlite_master WHERE type='table'",con) print(filtered_data) 给我“Empty DataFrame Columns: [name] Index: []”跨度> 所以它可以读取一个表,但是表是空的。您现在可以尝试确保 sqlite 文件中有一个包含正确数据的评论表。【参考方案3】:

为您的数据库文件提供类似的可共享 ID,就像您对 Review.csv 所做的那样

database_file=drive.CreateFile('id':'your_shareable_id for sqlite file') database_file.GetContentFile('database.sqlite')

【讨论】:

【参考方案4】:

如果您尝试从您的 google 驱动器访问文件,您需要先挂载驱动器:

from google.colab import drive
drive.mount('/content/drive')

完成此操作后,右键单击要在 colab 会话中读取的文件,然后选择“复制路径”并将其粘贴到连接字符串中。

con = sqlite3.connect('/content/database.sqlite')

您现在可以读取文件了。

【讨论】:

【参考方案5】:
con = sqlite3.connect('database.sqlite')
filtered_data = pd.read_sql_query("SELECT * FROM Reviews WHERE Score !=3",con)

如果你执行两次,你肯定会以这种类型的错误结束。只执行一次就不会失败。

如果遇到任何错误,请删除

数据库.sqlite

这个文件并再次提取它。这次再次执行它,没有任何失败/错误。这对我有用。

【讨论】:

以上是关于在 Google Colab 中查询 SQLite 数据库文件的主要内容,如果未能解决你的问题,请参考以下文章

如何在 google colab 中启用拼写检查器(colab 在 linux OS 上运行)?

google.colab 模块中是不是有关闭运行时的功能

我们如何在 colab.research.google.com 中使用 Selenium Webdriver?

如何在google colab中有效地使用内存?

如何在 Google 的 Colab 中安装 Python 包?

在 Google Colab 中访问“.pickle”文件