SQLite не может читать таблицы с помощью Python - PullRequest
0 голосов
/ 19 июня 2019

Я пытаюсь создать таблицу SQL из файла CSV, используя библиотеку Python sqlite3.Вот код, который я написал:

import csv
import sqlite3


csv_file = 'path/to/file.csv'
db = sqlite3.connect('clients.db')
db.execute('''CREATE TABLE main(
                ID          INT PRIMARY KEY     NOT NULL,
                name        VARCHAR,
                email       VARCHAR,
                address    VARCHAR);''')
# That part is only for getting the number of rows in the table
with open(csv_file, 'r') as csv_table: 
    reader = csv.DictReader(csv_table, delimiter=';')
    rows = sum(1 for r in reader)
# Here I'm reading the table
with open(csv_file, 'r') as csv_table:
    reader = csv.DictReader(csv_table, delimiter=';')
    for i, row in enumerate(reader):
        db.execute('''INSERT INTO main VALUES 
        ('{idn}', '{name}', '{email}', '{add}');'''.format(idn=i,
                                      name=row['name'],
                                      email=row['email'],
                                      add=row['address']))
        print('{}/{}:\t{}'.format(i+1, rows, row))
db.commit()
db.close()

После того, как я запустил этот код, я попытался получить доступ к таблице с помощью sqlite3, но я получил сообщение об ошибке: «Ошибка: нет такой таблицы: основная» в любое времяотправить запрос относительно таблицы 'main'.

Я пытался прочитать таблицу с помощью Python, и она отлично работает:

import sqlite3


db = sqlite3.connect('clients.db')
rows = db.execute('SELECT * FROM main;')
for r in rows:
    print(r)

Я запускаю этот скрипт из того же каталога, в которомЯ использую SQLite3.

Я использую Python 3.6, и моя ОС - Ubuntu 16.04.6 LTS.

1 Ответ

1 голос
/ 19 июня 2019

Проблема заключалась в том, что Python и sqlite3 фактически работали в разных местах, поэтому они использовали разные базы данных.

Я изменился

db = sqlite3.connect('clients.db')

до

db = sqlite3.connect('full/path/to/clients.db')

и теперь работает нормально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...