You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu下使用Python调用sqlite3执行execute失败问题求助

解决Python + sqlite3执行代码报错的问题

嘿,我帮你排查出问题啦,咱们一步步来解决:

核心错误原因

你代码里的这行是直接触发报错的关键:

c.execute(".separator \"\t\"")

.separator是SQLite命令行工具(也就是你在终端敲sqlite3进入的交互环境)专属的命令,根本不是标准SQL语句!而Python的sqlite3模块的execute()方法只能执行标准SQL,所以这行代码一跑就会报语法错误。

另外如果你的Ubuntu用的是默认的Python3(现在大部分Ubuntu版本都是),你写的print "Opened database successfully"这种无括号的print语句也会触发语法错误——Python3里print是函数,必须加括号。

修复步骤

1. 移除错误的.separator命令,换用Python方式处理制表符数据

如果你的需求是导入制表符分隔的TSV数据,咱们用Python的csv模块来处理就好,不用依赖SQLite命令行的语法。给你个完整的示例代码:

import sqlite3
import csv

name = "your_db_name"
# 用f-string更简洁,Python3支持
db_path = f"{name}.db"
conn = sqlite3.connect(db_path)
print("Opened database successfully")
c = conn.cursor()

# 补全你之前没写完的建表语句,把省略的字段补全
c.execute('''CREATE TABLE data_node(
    Time INTEGER,
    Node TEXT,
    CurSize INTEGER,
    SizeVar INTEGER,
    # 这里替换成你实际的剩余字段,比如下面的示例字段
    Value FLOAT,
    Status TEXT
)''')
print("Created table data_node successfully")

# 导入制表符分隔的TSV文件(假设你的数据文件叫data.tsv)
with open("data.tsv", "r", encoding="utf-8") as tsv_file:
    # 指定分隔符为制表符
    tsv_reader = csv.reader(tsv_file, delimiter="\t")
    # 如果你的TSV有表头,就跳过第一行
    next(tsv_reader)
    # 逐行插入数据
    for row in tsv_reader:
        # 用?作为占位符,避免SQL注入,同时适配数据格式
        c.execute('''INSERT INTO data_node 
                     (Time, Node, CurSize, SizeVar, Value, Status) 
                     VALUES (?, ?, ?, ?, ?, ?)''', row)

# 一定要提交事务,否则数据不会写入数据库
conn.commit()
# 关闭连接
conn.close()
print("Data imported and saved successfully")

2. 统一Python3语法

把所有print语句都加上括号,比如:

# 旧写法(Python2兼容)
print "Opened database successfully"
# 改成Python3兼容的写法
print("Opened database successfully")

额外提醒

  • 建表语句一定要写完整!你代码里的V...明显是截断了,要把所有字段的名称和类型都定义清楚,否则也会触发SQL语法错误。
  • 执行插入、更新这类修改数据的操作后,必须调用conn.commit(),不然所有修改都会丢失哦。

内容的提问来源于stack exchange,提问作者Silence

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 04:19:23