我有一个名为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
但它错了。
我该如何解决这个问题?
答案 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;"""