2014-03-25 54 views
0

我想在python和mysql中開發考勤錄音系統。我有一個由'a'和'p'值填充的列表。該列表等同於存在的卷號。現在每當我運行python代碼時,這個列表都應該添加到datestamp列表中。Mysql和python用於考勤系統

現在的錯誤是每個代碼提示錯誤時間: 完整列表: -

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

缺席捲號(S):

[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'") 
+0

正如我對你最後一個問題的回答,以及其他兩個人在這裏所回答的:改變你的數據庫佈局不是要走的路。保持設計靜態並更改數據。 – Hyperboreus

回答

2

您的表定義應該相當靜態。您應該只在設計時間/部署時間(在大多數情況下)添加datestamp列。但是,您的ALTER TABLE表語句試圖在每次運行代碼時將列添加到表中,這意味着每次在最初添加代碼後都會出錯。相反,您應該執行插入/更新語句來爲列設置值,但是您沒有真正顯示足夠的代碼來提供其他建議。

你的問題表明你對關係數據庫設計有一個基本的誤解,最好讓你退後一步並確保理解這些結構。

+0

這個人發佈了我說的話。錯誤字面上說,你有一個重複的名稱衝突。 – sten

+0

這是我在三週前告訴OP的內容... http://stackoverflow.com/questions/22233704/how-to-add-a-new-column-every-time-i-run-a-python-program/22234120#22234120 – Hyperboreus

+0

問題是你要求的是等於爲你編寫整個程序,教你SQL,教導如何通過Python驅動程序調用SQL並解釋關係數據庫是如何工作的。目前我沒有時間這樣做。如果您將DDL(表格模式)和Python代碼與您的問題一起發佈,而不是您認爲可能相關的一些隨機數據,您可能會從其他人那裏獲得進一步的幫助。 –