我希望我的表有第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()
答案 0 :(得分:0)
不要在运行时更改数据库设计,而是以改变数据而不是结构的方式进行设计。
你可以有两张桌子。其中一个名为Student
,列rollno
和name
,如果它是唯一的,则可能是rollno
上的PK。
然后有另一个名为Thing
的表(任何合适的名称,但我不知道您的数据是什么),有三列when
(日期时间),value
(任何合适的姓名)(CHAR(1))和student
(与rollno
相同的类型)。
在when
和value
上定义PK,以确保每个学生每个日期只有一个值。从Thing.student
到Student.rollno
定义FK。现在,您的数据库负责保持您的数据(大多数)保持一致。
根据您对不同列的选择,插入和更新的需求来定义索引。
然后查询连接两个表以获得所需的结果,例如
select s.name, t.value
from Student s
left join Thing t on t.student = s.rollno
where t.when == 'whenever'
(我不确定mysql方言,所以可能需要更多的引号。请随时编辑。)