MySQL将新列添加到现有表中

时间:2017-12-26 09:50:26

标签: mysql-5.7

我有一个名为table1的MySQL表,就像这个

name
a
b
c

我想在table1中添加两个新列。

我想得到的是

name list1 list2
a    1     2.5 
b    3     3.6 
c    2     3.3

我尝试了什么

ALTER TABLE table1
ADD COLUMN list1 INT NOT null
ADD COLUMN list2 DOUBLE NOT null

但它错了。

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

主要错误在于您的查询,因为您在第一次ADD(第二行结束)后忘记添加

首先复制以下脚本并将其粘贴到任何python文件中,如 mysql.py

注意:您提供自己的数据库连接参数。

import MySQLdb

# CREATING DATABASE AND CURSOR OBJECT 
db = MySQLdb.connect("localhost", "rishikesh", "rishikesh@321", "practice");
cursor = db.cursor()

# VERIFY THE MYSQL VERSION
cursor.execute("SELECT VERSION()")
mysql_version = cursor.fetchone();
print(mysql_version)

# CREATION OF TABLE, INSERTION INTO TABLE
cursor.execute("CREATE TABLE table1 (id INT NOT NULL AUTO_INCREMENT  \
    PRIMARY KEY, name VARCHAR(5))");
cursor.execute("INSERT INTO table1(name) values('a'), ('b'), ('c');");

# COMMITING CHANGES
db.commit(); 

query = """ALTER TABLE table1
        ADD COLUMN list1 INT NOT NULL,
        ADD COLUMN list2 DOUBLE NOT NULL
        """
cursor.execute(query);

# UPDATING TABLE
query = "UPDATE table1 SET list1=1, list2=2.5 WHERE id=1";
cursor.execute(query);

query = "UPDATE table1 SET list1=3, list2=3.6 WHERE id=2";
cursor.execute(query);

query = "UPDATE table1 SET list1=2, list2=3.3 WHERE id=3"
cursor.execute(query)

# COMMITING CHANGES
db.commit();

# UPDATING TABLE
query = "UPDATE table1 SET list1=1, list2=2.5 WHERE id=1";
cursor.execute(query);

query = "UPDATE table1 SET list1=3, list2=3.6 WHERE id=2";
cursor.execute(query);

query = "UPDATE table1 SET list1=2, list2=3.3 WHERE id=3"
cursor.execute(query)

# COMMITING CHANGES
db.commit();

最后使用 python mysql.py 命令执行它。你完成了。

在我的情况下,我打开了MySQL客户端并验证了o / p如下。

mysql> USE practice;
Database changed
mysql> SHOW TABLES;  /* BEFORE RUNNING PYTHON SCRIPT */ 
Empty set (0.00 sec)

mysql> SHOW TABLES;
+--------------------+
| Tables_in_practice |
+--------------------+
| table1             |
+--------------------+
1 row in set (0.00 sec)

mysql> SELECT * FROM table1;  /* AFTER RUNNING PYTHON SCRIPT */
+----+------+-------+-------+
| id | name | list1 | list2 |
+----+------+-------+-------+
|  1 | a    |     1 |   2.5 |
|  2 | b    |     3 |   3.6 |
|  3 | c    |     2 |   3.3 |
+----+------+-------+-------+
3 rows in set (0.00 sec)

mysql>  

答案 1 :(得分:0)

您的问题与MySQL有关,而与Python无关。一旦您的SQL语法正确,代码就可以正常工作。

https://dev.mysql.com/doc/refman/5.7/en/alter-table.html

https://dev.mysql.com/doc/refman/5.7/en/alter-table-examples.html

提示:你遗漏了一些逗号,可能还有一个分号(可选),你不需要说COLUMN(因为它也是可选的):

sql = """ALTER TABLE table1
         ADD list1 INT NOT null,
         ADD list2 DOUBLE NOT null;"""