将表插入到我使用 sqlite 在 python 中创建的数据库中时出错

Posted

技术标签:

【中文标题】将表插入到我使用 sqlite 在 python 中创建的数据库中时出错【英文标题】:error with inserting a table into a database I created in python using sqllite 【发布时间】:2016-12-25 00:40:06 【问题描述】:

每次我尝试在我创建的标题为“教程”的数据表中创建一个表时,都会出现错误。这是我的python代码:

import sqlite3

conn=sqlite3.connect('tutorial.db')

c=conn.cursor()

def create_table():
c.execute("CREATE TABLE example(Language VARCHAR , Version REAL, Skill TEXT)")


def enter_data():

     c.execute("INSERT INTO example VALUES('Python',3.3,'Intermediate')")
     c.execute("INSERT INTO example VALUES('Python',2.7,'Beginner')" )

     c.execute("INSERT INTO example VALUES('Python',3.4,'Expert')" )
     conn.commit()

   enter_data()



  #conn.close()

这是我运行代码时出现的错误:

Traceback(最近一次调用最后一次): 文件“C:/Users/Pentazoid/Desktop/成为专业的 python 程序员/第 2 节 web python 编程/insert_data.py”,第 19 行,在 输入数据() 文件“C:/Users/Pentazoid/Desktop/成为专业的 Python 程序员/第 2 节 web python 编程/insert_data.py”,第 13 行,在 enter_data c.execute("INSERT INTO example VALUES('Python',3.3,'Intermediate')") sqlite3.OperationalError:没有这样的表:示例

怎么了?

【问题讨论】:

【参考方案1】:

您没有执行 create_table() ,因此该表永远不会创建,enter_data() 在尝试插入时找不到它。

【讨论】:

【参考方案2】:

您应该在插入语句之前调用该函数来创建表并提交:

import sqlite3

conn = sqlite3.connect('tutorial.db')

c = conn.cursor()

def create_table():
    c.execute("CREATE TABLE example(Language VARCHAR , Version REAL, Skill TEXT)")


def enter_data():
    create_table()
    conn.commit()

    c.execute("INSERT INTO example VALUES('Python',3.3,'Intermediate')")
    c.execute("INSERT INTO example VALUES('Python',2.7,'Beginner')" )

    c.execute("INSERT INTO example VALUES('Python',3.4,'Expert')" )
    conn.commit()

enter_data()

但是,考虑使用 SQLAlchemy

【讨论】:

【参考方案3】:

首先在命令行中执行create_table() 以创建表(如上所述)。然后添加enter_data() 进行插入。

【讨论】:

以上是关于将表插入到我使用 sqlite 在 python 中创建的数据库中时出错的主要内容,如果未能解决你的问题,请参考以下文章

Java SQLite 数据库,插入条目给出 nullPointerException

如何在 Android 中将 Arraylist 插入 sqlite?

SQLite插入 - 如何使用参数化值避免语法错误时插入任何文本

如何提高 Python 3.6 中的 SQLite 插入性能?

使用 ADO.NET Entity Framework 将记录插入 Sqlite DB?

Python3 | sqlite3:executemany() 不插入任何内容