Mysql和Python用于考勤系统

0 投票
1 回答
1759 浏览
提问于 2025-04-17 23:52

我正在用Python和MySQL开发一个考勤记录系统。我有一个列表,里面填充了'a'和'p'的值,这个列表代表了出席的学号。每次我运行Python代码时,这个列表应该被添加到数据库表中,并且要有一个日期戳作为列。

现在的问题是,每次运行代码时都会出现错误:

完整列表:

['P', 'P', 'P', 'A', 'P', 'P', 'P', 'P', 'A', 'P', 'P', 'P', 'P', 'P', 'P', 'P', 'P', 'P', 'P', 'P']

缺席的学号:

[4, 9]

出席的学号:

[1, 2, 3, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]

写入数据库:

Traceback (most recent call last):
  File "take.py", line 47, in <module>
    cursor.execute("ALTER TABLE student ADD column datestamp Date;")`enter code here`

 File "/usr/lib/python2.7/dist-packages/MySQLdb/cursors.py", line 174, in execute
    self.errorhandler(self, exc, value)

  File "/usr/lib/python2.7/dist-packages/MySQLdb/connections.py", line 36, in defaulterrorhandler

    raise errorclass, errorvalue
_mysql_exceptions.OperationalError: (1060, "Duplicate column name 'datestamp'")

1 个回答

2

你的表格定义应该是比较固定的。一般来说,你只需要在设计或部署的时候添加一次datestamp这一列就可以了。然而,你的ALTER TABLE语句每次运行时都在尝试往表里添加这一列,这样的话在第一次添加后,每次再运行就会出错。相反,你应该使用插入或更新的语句来给这一列设置值,但你提供的代码不够多,我们无法给出更多的建议。

你的问题表明你对关系数据库设计有一些基本的误解,建议你先退一步,确保自己理解这些基本概念。

撰写回答