我正在尝试使用Python创建一个DataFrame并将其写入SQL表。该表应以变量命名,具体为table_name
(table_name
将在运行我的代码时更改)。以下是我尝试设置此代码的相关部分:
con = sql.connect(r'/Users/linnk/Desktop/Results/Data.db') # Creates database to write to
cur = con.cursor()
...code...
cur.execute('''CREATE TABLE IF NOT EXISTS ''' + table_name + ''' (Date, Morning1, Day1, Evening1, Night1, Morning3, Day3, Evening3, Night3)''')
运行它会产生错误(对于最后一行):
OperationalError: near "-": syntax error
我尝试对我的代码的最后一行进行一些修改,但得到类似的错误。任何人都可以帮助我发现我的错误/对我的代码进行必要的调整吗?有关信息,table_name包含一个字符串。
提前感谢您提出任何建议。
修改/更新:
根据我的阅读,似乎最好创建一个字符串然后传递给cur.execute():
stringexecute='''\'CREATE TABLE IF NOT EXISTS '''+ table_name +''' (Date, Morning1 real, Day1 real, Evening1 real, Night1 real, Morning3 real, Day3 real, Evening3 real, Night3 real)\''''
cur.execute(stringexecute)
有关信息,stringexecute输出:
stringexecute= 'CREATE TABLE IF NOT EXISTS GUTUR_400_F1-KIAGA-1 (Date, Morning1Ph real, Day1Ph real, Evening1Ph real, Night1Ph real, Morning3Ph real, Day3Ph real, Evening3Ph real, Night3Ph real)'
然而,代码仍然不起作用。它给出了:
OperationalError: near "'CREATE TABLE ......'": syntax error
任何进一步的帮助将不胜感激。我主要看过并且(未成功)尝试了以下资源中的方法: http://www.sommarskog.se/dynamic_sql.html#objectnames https://docs.python.org/2/library/sqlite3.html
修改
只要变量table_name
不包含' - '(以及可能的其他符号),结果如下:
cur.execute("CREATE TABLE IF NOT EXISTS " + table_name + " (Date, Morning1 real, Day1 real, Evening1 real, Night1 real, Morning3 real, Day3 real, Evening3 real, Night3 real)")
答案 0 :(得分:1)
为什么不使用:
cur.execute('CREATE TABLE IF NOT EXISTS {tab} (Date, Morning1, Day1, Evening1, Night1, Morning3, Day3, Evening3, Night3)'
.format(tab=table_name))
答案 1 :(得分:0)
输入此代码:
def crear_tabla (name):
cur = conn.cursor()
cur.execute('''CREATE TABLE {tab}
(ID INT PRIMARY KEY NOT NULL,
NAME TEXT NOT NULL,
AGE INT NOT NULL,
ADDRESS CHAR(50),
SALARY REAL);'''.format(tab=name))
print ("Table created successfully")
cur.close()
conn.commit()