2017-12-26 1 views
-2

의 기존 테이블에 새 열을 추가 나는 내가 얻을 원하는 를 표하기 위해 두 개의 새 열을 추가 할이파이썬 MySQL의

table1 
name 
a 
b 
c 

같은 MySQL의 테이블

table1 
name list1 list2 
a 1  2.5 
b 3  3.6 
c 2  3.3 
있다가 내가 뭘하려

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

""" 

하지만 오류 : 당신은 당신의 SQL 구문에 오류가 있습니다

답변

0

문제는 MySQL과 관련이 있으며 파이썬과 관련이 없습니다. 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 말을 할 필요가 없습니다 :

0

첫 번째 추가 (두 번째 줄 끝) 이후에 ,을 추가하는 것을 잊어 버린 주요 오류가 있습니다.

먼저 아래 스크립트를 복사하여 mysql.py과 같은 임의의 python 파일에 붙여 넣으십시오.

참고 : 자신 만의 데이터베이스 연결 매개 변수를 제공합니다.

import MySQLdb 

# CREATING DATABASE AND CURSOR OBJECT 
db = MySQLdb.connect("localhost", "rishikesh", "[email protected]", "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(); 

마지막 파이썬 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>