我正在尝试在 python 3 中使用构造的 f 字符串创建一个 sqlite3 db 表,但是我收到以下错误:
sqlite3.OperationalError: near "(": syntax error
我曾希望我不需要在这里询问语法错误,但我一直在 stackoverflow 以及一般在线搜索以确定问题,但没有成功。我已经将代码与其他示例进行了比较,同样看不出与构造有任何区别,只是使用 f 字符串似乎并不常见。
我已经阅读了传递参数的优缺点,并且更喜欢这个 f 字符串,除非它是根本原因。
我希望这个问题可能很明显,但是任何指针都将不胜感激。
以下是完整代码:
import sqlite3
import pandas as pd
db_path = [PATH TO DATABASE]
db_table_name = [TABLE NAME]
header_source = [PATH TO .XLSX]
def ReadHeaders():
df = pd.read_excel(header_source)
col_list = list(df.columns.values)
prep_col_list = [item.replace(" ", "_") for item in col_list]
col_string = " TEXT, _".join(prep_col_list)
final_col_string = col_string.replace("Primary_ID TEXT", "Primary_ID PRIMARY KEY")
return final_col_string
def CreateSQLdb():
cols = ReadHeaders()
conn = sqlite3.connect(db_path)
c = conn.cursor()
c.execute(f""" CREATE TABLE IF NOT EXISTS {db_table_name} ({cols}) """)
conn.commit()
conn.close()
为表头创建的字符串示例如下:
_link TEXT, _Primary_ID PRIMARY KEY, _Status_Description TEXT, _Price_List_Status TEXT, _Brand TEXT, _36_Character_Description TEXT