首页 > 解决方案 > 将变量值传递给列名 sqlite3 python

问题描述

我试图通过添加一列来更改表,但不是直接在 sql 语句中命名它,而是我想使用一个变量值,所以我可以继续添加带有循环的列。其他变量有多种类型,从整数、浮点数、字符串甚至日期。

import sqlite3
db_path = "/Users/mbp2013/Library/Mobile Documents/com~apple~CloudDocs/Documents/Code/xml_echo_script/echo_db.db"

conn = sqlite3.connect(db_path)
db = conn.cursor()

variable = "whatever"
db.execute("ALTER TABLE echo ADD COLUMN ?", (variable))

但是,我不断收到 sqlite3.OperationalError: near "?": syntax error

我正在使用 sqlite 3 和 python 3.8.3。

有任何想法吗?

标签: pythonpython-3.xsqlite

解决方案


您可能想使用基于 Python 的字符串替换:

import sqlite3

db_path = "/Users/mbp2013/Library/Mobile Documents/com~apple~CloudDocs/Documents/Code/xml_echo_script/echo_db.db"
conn = sqlite3.connect(db_path)
db = conn.cursor()
variable = "whatever"
db.execute(f"ALTER TABLE echo ADD COLUMN {variable}")

推荐阅读