【发布时间】:2017-02-15 03:50:03
【问题描述】:
这是我的代码:
val = str(datetime.datetime.now().strftime("%y-%m-%d"))
print(val)
def export():
cursor = conn.cursor()
cursor.execute("ALTER TABLE TRACKER ADD %s INTEGER" % val)
conn.commit()
当我运行代码时,它会打印“17-02-14”,但是当我点击导出按钮时,我收到错误“'17' 附近的语法不正确”
添加列的语法与其他变量一起工作正常。它只是不适用于日期。我什至将日期转换为字符串,但由于某种原因没有修复它。
【问题讨论】:
-
您确定要创建一个名为 17-02-14 的列吗?或者列名应该是“时间戳”或类似的东西?该错误是因为 SQL 表名不能在适当的位置包含带有正确转义字符的连字符(除非您绝对需要它,否则这会带来麻烦)。
-
啊,我不知道。我希望列标题是日期,以便将来可以参考。这样做的好方法是什么?
-
您可以使用下划线代替连字符。或者,使用 yyyymmdd 格式作为列名。
-
将列标题设为特定日期的用例是什么。我还没有看到任何这样设计的数据库模式,因为每 24 小时你就会有一个新的日期,而且你的表会在短时间内用完列。 (或至少变得无法管理)。我建议在数据库表中添加一个“日期”列并针对它添加行。如果您的列数不同,像 MongoDB 这样的 NOSQL 数据库也可能是一个不错的选择。
-
列名本身应该是一个字符串(它是一个名称)。猜猜使用全整数列名可能会有限制。 1. 你可以尝试添加一个字母作为前缀 - 比如 d_20141217? 2. 列名可以用双引号“20141217”括起来吗?