SQLite无法读取使用Python创建的表

时间:2019-06-19 13:04:48

标签: python python-3.x sqlite

我正在尝试使用Python sqlite3库从CSV文件创建SQL表。 那就是我写的代码:

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访问该表,但每次我发送有关“主”表的查询时,都会收到错误消息:“错误:没有这样的表:主”。

我尝试使用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 个答案:

答案 0 :(得分:1)

问题在于Python和sqlite3实际上运行在不同的位置,因此它们使用了不同的数据库。

我已经改变

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

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

现在工作正常。