python - MySQL中的Python变量执行命令
问题描述
我到处寻找答案,但没有找到合适的答案。
这是我的代码:
conn = pymysql.Connect(host="host", user="user", passwd="password", db="database")
dbhandler = conn.cursor()
table_name = today_date.split(" ")[0]
execute_it = """CREATE TABLE %s (
USERNAME CHAR(20) NOT NULL,
X CHAR(10),
Y INT,
Z INT,
A INT)"""
try:
dbhandler.execute(execute_it, table_name)
except:
print("\n----------------------------\nFailed to create table.")
现在我试着这样做。我尝试在执行中使用 % 分离。我试过了?而不是 %s。我尝试了更多选项,但没有一个对我有用,我无法创建表格
这是我得到的例外:
(1064, "您的 SQL 语法有错误;请查看与您的 MariaDB 服务器版本相对应的手册,了解在 ''11/14/18' 附近使用的正确语法 (\n USERNAME CHAR(20) NOT NULL, \ n
X CHAR(10' 在第 1 行")
使用 5.5.52-MariaDB。
谢谢!
编辑:
设法通过它。感谢 Pavel Francírek 的帮助。
解决方案
问题不在于占位符,而在于日期格式。表名中不允许使用字符“/”。尝试类似:
table_name = today_date.split(" ")[0].replace("/","")
我假设您的日期格式中的所有数字都是 2 位数字。
推荐阅读
- c# - 添加 NuGet 包后 Clickonce 部署大小膨胀
- url - Google News XML API:使用国家/语言参数
- python - 查询大型 SQL Server 表时,pymssql/pyodbc 性能(cursor.execute)非常慢
- shell - 我想编写一个 unix 代码来从 .txt 文件中的这个 SQL 代码中提取括号之间的所有列名
- simulink - Simulink 采样时间与中断服务程序采样时间有何关系?
- javascript - 是否可以提取 youtube 频道/视频页面的 Adsense 发布者 ID?
- java - 使用 Gmail Api 线程化电子邮件 [在新线程化要求之后]
- javascript - 如何使用javascript获取字符串中的匹配索引?
- php - 如何使用以 url 作为键的关联数组?
- c# - 在实体框架中,我应该何时使用 FirstOrDefaultAsync 或 FirstOrDefault?