从Python创建具有变量名的SQL表
我正在尝试使用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
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()