每次运行python程序时如何添加新列

时间:2014-03-06 19:08:00

标签: python mysql mysql-python

我希望我的表有第1列作为滚动号,第二列作为名称。每当我运行python程序时我想在表中添加一列日期。在那个新列中我想填充我从中得到的列表user.list将包含值“P”,“A”,“P”,“P”等等。 我尝试首先通过alter命令添加一列然后插入数据,但没有任何作用。

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()

1 个答案:

答案 0 :(得分:0)

不要在运行时更改数据库设计,而是以改变数据而不是结构的方式进行设计。

你可以有两张桌子。其中一个名为Student,列rollnoname,如果它是唯一的,则可能是rollno上的PK。

然后有另一个名为Thing的表(任何合适的名称,但我不知道您的数据是什么),有三列when(日期时间),value(任何合适的姓名)(CHAR(1))和student(与rollno相同的类型)。

whenvalue上定义PK,以确保每个学生每个日期只有一个值。从Thing.studentStudent.rollno定义FK。现在,您的数据库负责保持您的数据(大多数)保持一致。

根据您对不同列的选择,插入和更新的需求来定义索引。

然后查询连接两个表以获得所需的结果,例如

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

(我不确定mysql方言,所以可能需要更多的引号。请随时编辑。)

相关问题