Mysql和python在考勤系统中的应用
我正在尝试用python和mysql开发一个考勤系统。我有一个列表,其中填充了“a”和“p”值。此列表等于当前的卷号。现在,每当我运行python代码时,这个列表都应该添加到表中,并以datestamp作为列 现在,每次代码出错时都会出现错误: 完整列表:-Mysql和python在考勤系统中的应用,python,mysql,Python,Mysql,我正在尝试用python和mysql开发一个考勤系统。我有一个列表,其中填充了“a”和“p”值。此列表等于当前的卷号。现在,每当我运行python代码时,这个列表都应该添加到表中,并以datestamp作为列 现在,每次代码出错时都会出现错误: 完整列表:- ['P', 'P', 'P', 'A', 'P', 'P', 'P', 'P', 'A', 'P', 'P', 'P', 'P', 'P', 'P', 'P', 'P', 'P', 'P', 'P'] 缺少卷号: 当前卷号: 写入数据库:
['P', 'P', 'P', 'A', 'P', 'P', 'P', 'P', 'A', 'P', 'P', 'P', 'P', 'P', 'P', 'P', 'P', 'P', 'P', 'P']
缺少卷号:
当前卷号:
写入数据库:
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'")
回溯(最近一次呼叫最后一次):
文件“take.py”,第47行,在
cursor.execute(“ALTERTABLE学生添加列日期戳;”)`在此处输入代码`
文件“/usr/lib/python2.7/dist packages/MySQLdb/cursors.py”,执行中的第174行
errorhandler(self、exc、value)
文件“/usr/lib/python2.7/dist packages/MySQLdb/connections.py”,第36行,在defaulterrorhandler中
提高errorclass,errorvalue
_mysql_exceptions.Error:(1060,“重复的列名'datestamp'”)
您的表定义应该是相当静态的。您应该在设计时/部署时(在大多数情况下)只添加一次日期戳
列。但是,altertable
TABLE语句在每次运行代码时都试图将该列添加到表中,这意味着每次在最初添加该列后都会出错。相反,您应该执行insert/update语句来设置列的值,但是您还没有显示足够的代码,我们无法提供额外的建议
您的问题表明您对关系数据库设计有一个根本性的误解,最好退后一步,确保您理解这些结构。这个人发布了我要说的内容。错误的字面意思是你有一个重复的名字冲突。这是我三周前告诉OP的。。。问题是,您所要求的相当于为您编写整个程序,教您SQL,教您如何通过Python驱动程序调用SQL,以及解释关系数据库如何工作。我现在没有时间做那件事。如果您将DDL(表模式)和Python代码与您的问题一起发布,而不仅仅是一些您认为可能相关的随机位,您可能会从其他人那里得到进一步的帮助。问题已解决。我是自己学习的。我已经能够在表中插入数据。感谢您回答了您的最后一个问题,正如其他两个人在这里回答的那样:改变数据库布局不是一条好路。保持设计静态并更改数据。
[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'")