Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql和python在考勤系统中的应用_Python_Mysql - Fatal编程技术网

Mysql和python在考勤系统中的应用

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'] 缺少卷号: 当前卷号: 写入数据库:

我正在尝试用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']
缺少卷号:

当前卷号:

写入数据库:

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'")