从Python创建具有变量名的SQL表

从Python创建具有变量名的SQL表,python,sql,pandas,dataframe,Python,Sql,Pandas,Dataframe,我正在尝试使用Python创建一个数据帧并将其写入SQL表。该表应以变量命名,特别是table\u name(table\u name将在运行代码时更改)。下面是我尝试设置此设置的代码的相关部分: con = sql.connect(r'/Users/linnk/Desktop/Results/Data.db') # Creates database to write to cur = con.cursor() ...code... cur.execute('''CREATE TABLE

我正在尝试使用Python创建一个数据帧并将其写入SQL表。该表应以变量命名,特别是
table\u name
table\u 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)''')
运行此命令会产生错误(对于最后一行):

我试着对代码的最后一行做了几次修改,但都出现了类似的错误。有人能帮我发现错误/对代码进行必要的调整吗?表_name包含一个字符串以供参考

提前感谢您的建议

编辑/更新:

从我所读到的内容来看,创建一个字符串并将其传递给cur.execute()似乎更好:

有关信息,请参阅执行输出:

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
任何进一步的帮助都将不胜感激。我主要从以下资源中查看并尝试了这些方法(未成功):

编辑

只要变量
table_name
不包含“-”(以及可能的其他符号),以下方法就可以工作:

你为什么不使用:

cur.execute('CREATE TABLE IF NOT EXISTS {tab} (Date, Morning1, Day1, Evening1, Night1, Morning3, Day3, Evening3, Night3)'
   .format(tab=table_name))
请输入以下代码:

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()

如果您硬编码一个表名会发生什么情况?这似乎有效-这会在数据库中创建“Table1”:cur.execute(“'CREATE table if NOT EXISTS Table1(Date,Morning1,Day1,Evenning1,Night1,Morning3,Day3,Evenning3,Night3)”),根据您上次的更新,问题似乎只是禁止字符。在执行表创建步骤之前,您能将它们regex.sub吗?我只是使用了dataframe.replace()并将“-”替换为“-”
 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)")
cur.execute('CREATE TABLE IF NOT EXISTS {tab} (Date, Morning1, Day1, Evening1, Night1, Morning3, Day3, Evening3, Night3)'
   .format(tab=table_name))
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()