2014-03-06 35 views
0

我希望我的表有第一列作爲roll no,第二個作爲name.whenever我運行python程序我想在table.and中添加一列日期那個新的列我想填充我從user.list得到的列表將包含值'P','A','P','P'等。如何去做呢? 我試着先通過alter命令添加一列,然後插入數據,但沒有任何工作。如何添加一個新的列,每次我運行一個python程序

choice1=raw_input("\nEnter 'y' or 'n' to add new column:\n") 
if choice1 is 'y': 
    cursor.execute(" ALTER TABLE table1 ADD datecolumn varchar(20)") 
    db.commit() 
    for i in xrange(0,10): 
     if students[i] is 'A': 
      cursor.execute("insert into table1(datetime) values ('A')") 
      db.commit() 
     elif students[i] is 'P': 
      cursor.execute("insert into table1(datetime) values ('P')") 
      db.commit() 
+3

在運行時更改您的數據庫設計是也許不是你真正想要的。你試圖完成什麼? – Hyperboreus

+1

我不知道這是否是你的問題的一部分,但你不應該用'is'來檢查是否相等。改用'=='運算符。 – Kevin

回答

0

不要在運行時更改數據庫設計,但要設計它,以便您將更改數據而不是結構。

你可以有兩個表。一個叫Student,列rollnoname,如果它是唯一的,可能是rollno上的PK。

然後有一個名爲Thing另一個表(任何合適的名字,但我不知道你的數據是關於什麼的),有三列when(日期時間),value(任何合適的名稱)(CHAR(1))和student(與rollno相同)。

定義PK在兩個whenvalue,以確保每個學生都有每個日期只有一個值。定義一個FK從Thing.studentStudent.rollno。現在您的數據庫負責保持您的數據(大部分)一致。

根據您對不同列的選擇,插入和更新的需求定義索引。

然後,爲了查詢連接兩個表以獲得期望的結果,例如,

select s.name, t.value 
from Student s 
left join Thing t on t.student = s.rollno 
where t.when == 'whenever' 

(我不知道MySQL的話,也許還需要一些更多的報價,請隨時進行編輯。)

相關問題