You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Python中sqlite3.OperationalError: incomplete input错误如何解决?

解决sqlite3.OperationalError: incomplete input错误

嘿,这个问题一眼就能揪出根源!你碰到的sqlite3.OperationalError: incomplete input错误,问题就出在第7行的CREATE TABLE语句里——你的SQL语句少写了一个闭合的右括号

错误原因分析

看你第7行的代码:

cursor.execute("CREATE TABLE veritabani(İsim TEXT, Yazar TEXT, Yayınevi TEXT, Sayfa INTEGER")

这条SQL语句开头用左括号(定义了表的列,但结尾没补上对应的右括号),SQL解析器会认为语句不完整,直接抛出“输入不完整”的错误。

修复后的完整代码

只需要给CREATE TABLE语句补上右括号就行,修复后的完整代码如下:

import sqlite3
con = sqlite3.connect("database.db")
cursor = con.cursor()
def tablo_olustur():
    # 补上闭合的右括号,SQL语句完整了
    cursor.execute("CREATE TABLE veritabani(İsim TEXT, Yazar TEXT, Yayınevi TEXT, Sayfa INTEGER)")
    con.commit()
def veri_ekle():
    cursor.execute("insert into veritabani Values('İstanbul Hatırası', 'Ahmet Ümit', 'Everest', 561)")
    con.commit()
tablo_olustur()
veri_ekle()
con.close()

额外的实用小建议

  • 写SQL语句时,一定要检查括号、引号的配对情况,这类语法错误很常见,但只要细心就能避免;
  • 插入数据时推荐用参数化查询,既能避免SQL注入风险,也能让代码更健壮,比如把veri_ekle函数改成这样:
    def veri_ekle():
        cursor.execute("INSERT INTO veritabani VALUES(?, ?, ?, ?)", 
                      ('İstanbul Hatırası', 'Ahmet Ümit', 'Everest', 561))
        con.commit()
    
  • 可以加个异常捕获逻辑,让程序出错时给出更友好的提示,还能确保数据库连接正常关闭:
    try:
        tablo_olustur()
        veri_ekle()
    except sqlite3.Error as e:
        print(f"数据库操作出错啦: {e}")
    finally:
        con.close()
    

内容的提问来源于stack exchange,提问作者satck olerfowl user

火山引擎 最新活动