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: Execution failed on sql 'SELECT * FROM Reviews WHERE Score != 3 ': no such table: Reviews






Попробуйте вместо этого. Посмотрите, какие там таблицы.
"SELECT name FROM sqlite_master WHERE type='table'"
Таким образом, он может читать таблицу, но таблица пуста. Теперь вы можете попробовать убедиться, что в файле sqlite есть таблица отзывов с правильными данными.
присвойте файлу базы данных такой же общий идентификатор, как и в случае с Reviews.csv.
database_file = drive.CreateFile ({'id': 'your_sharable_id для файла sqlite'}) файл_базы_данных.GetContentFile ('database.sqlite')
Если вы пытаетесь получить доступ к файлам со своего диска Google, вам необходимо сначала смонтировать диск:
from google.colab import drive
drive.mount('/content/drive')
После этого щелкните правой кнопкой мыши файл, который вы собираетесь читать в сеансе colab, выберите «Копировать путь» и вставьте его в строку подключения.
con = sqlite3.connect('/content/database.sqlite')
Теперь вы можете прочитать файл.
con = sqlite3.connect('database.sqlite')
filtered_data = pd.read_sql_query("SELECT * FROM Reviews WHERE Score !=3",con)
Если вы выполните его дважды, вы обязательно закончите с этим типом ошибки. Выполните его ровно один раз без каких-либо сбоев.
Если вы получите какую-либо ошибку, удалите
database.sqlite
этот файл и извлеките его снова. На этот раз выполните его снова без сбоев / ошибок. Это сработало для меня.
Ниже вы найдете код для db setup on the Colab VM, table creation, data insertion и data querying. Выполните все фрагменты кода в отдельных ячейках записной книжки.
Однако обратите внимание, что этот пример показывает только, как выполнить код на непостоянной виртуальной машине Colab. Если вы хотите сохранить свою базу данных в GDrive, вам сначала нужно смонтировать Gdrive (источник):
from google.colab import drive
drive.mount('/content/gdrive')
и перемещаться в соответствующий файловый каталог после.
Шаг 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()
Проверьте, успешно ли была создана БД:
!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','[email protected]','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")
Выход:
Successfully Connected to SQLite
Record inserted successfully into SqliteDb_developers table 1
The SQLite connection is closed
Шаг 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', '[email protected]', '2020-01-01', 1000)
filter_data = pd.read_sql_query ("SELECT name FROM sqlite_master WHERE type = 'table'", con) print (filter_data) дает мне "Пустые столбцы DataFrame: [имя] Индекс: []"