【问题标题】:Python function to insert data with SQL query使用 SQL 查询插入数据的 Python 函数
【发布时间】:2020-02-01 17:15:11
【问题描述】:

我收到以下错误,尽管 SQL 语法似乎正确。请帮忙。

def create_table(self, **kwargs):
    query = "CREATE TABLE IF NOT EXISTS {} ("
    comma = r', '
    for key, value in kwargs.items():
        if key != 'table_name':
            query = query + key + ' ' + value + comma
    query = query.format(kwargs['table_name']).rstrip(' ,') + ")"
    print(query)
    return self.cursor.execute(query)

def insert_values(self, *args):
    query = r"INSERT INTO {} VALUES ("
    comma = r','
    for arg in args:
        if arg != args[0]:
            if type(arg) == str:
                query = query + "'" + arg + "'" + comma
            else:
                query = query + str(arg) + comma
    query = query.format(args[0]).rstrip(" ,") + ")"
    print(query)
    return self.cursor.execute(query)

db.create_table(table_name='store', item='TEXT', quantity='INTEGER', price='REAL')
db.insert_values('store', 'wine glass', 8, 10.5)

输出

# CREATE TABLE IF NOT EXISTS store (item TEXT, quantity INTEGER, price REAL)

# INSERT INTO store VALUES ('wine glass',8,10.5)

sqlite3.OperationalError: 表存储有 1 列但有 3 个值 提供

【问题讨论】:

  • 一定要commit任何动作或设置autocommit=True
  • 这是完整的代码吗?错误信息相当清楚。表store 是否可能已经存在,并且只有一列?然后第一条语句CREATE TABLE IF NOT EXISTS 将运行而不会出错,因为表已经存在,所以什么也不做。

标签: python sql sqlite


【解决方案1】:

已解决

冻糕你是对的。 每次运行代码时,我都删除了班级正在创建的本地数据库,并重新启动了每个操作。方法有效,我只是没有看到实际结果。

完整代码在这里: https://github.com/BackstageBones/Python-Object-Oriented-Programming/blob/tkinter_app/Desktop%20Database%20Application/database.py

【讨论】:

    猜你喜欢
    • 2013-03-19
    • 1970-01-01
    • 1970-01-01
    • 2013-05-21
    • 1970-01-01
    • 1970-01-01
    • 2014-03-03
    • 2013-03-31
    • 1970-01-01
    相关资源
    最近更新 更多