Mysql和Python用于考勤系统
我正在用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
语句每次运行时都在尝试往表里添加这一列,这样的话在第一次添加后,每次再运行就会出错。相反,你应该使用插入或更新的语句来给这一列设置值,但你提供的代码不够多,我们无法给出更多的建议。
你的问题表明你对关系数据库设计有一些基本的误解,建议你先退一步,确保自己理解这些基本概念。