Python MySQL 执行 creatable 时出现语法错误 ... 比如

Python MySQL syntax error while executing creatable ... like

我正在为我的 MySQL 数据库制作备份系统。 Excatly 然后用户插入新的 excel 文件旧文件被复制到不同的名称。 这是代码的一部分:

now = datetime.now()
dt_string = now.strftime("-%Y_%m_%d-%H_%M_%S")
table_name = table + dt_string
print(dt_string)
print(table)
print(table_name)
self.operator.execute("create table %s like %s", (table_name, table))
self.operator.execute("insert into %s select * from %s", (table_name, table))

输出和错误代码:

_2021_07_29_12_24_12
import_test_1
import_test_1_2021_07_29_12_24_12
Traceback (most recent call last):
  File "C:\Users\c1v\PycharmProjects\Python_Exel\PhoneExel\import_tester.py", line 7, in <module>
    c.import_excel("import_test_1", "C:\Users\c1v\Desktop\cats.xls")
  File "C:\Users\c1v\PycharmProjects\Python_Exel\PhoneExel\db_manager.py", line 85, in import_excel
    self.operator.execute("create table %s like %s", (table_name, table))
  File "C:\Users\c1v\PycharmProjects\Python_Exel\kivy_venv\lib\site-packages\mysql\connector\cursor.py", line 551, in execute
    self._handle_result(self._connection.cmd_query(stmt))
  File "C:\Users\c1v\PycharmProjects\Python_Exel\kivy_venv\lib\site-packages\mysql\connector\connection.py", line 490, in cmd_query
    result = self._handle_result(self._send_cmd(ServerCmd.QUERY, query))
  File "C:\Users\c1v\PycharmProjects\Python_Exel\kivy_venv\lib\site-packages\mysql\connector\connection.py", line 395, in _handle_result
    raise errors.get_exception(packet)
mysql.connector.errors.ProgrammingError: 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''import_test_1_2021_07_29_12_24_12' like 'import_test_1'' at line 1  

sql 查询中的字符串参数应采用引号形式:

.... '%s' like '%s'.....

更新

对于你的情况,你可以试试这个:

("""create table '%s' like '%s'""", (table_name, table))

或另一个较旧的解决方案是:

("create table " + table_name  + " like " + table + " ")