📌  相关文章
📜  如何在Python中向 MySQL 表添加列?

📅  最后修改于: 2022-05-13 01:55:04.446000             🧑  作者: Mango

如何在Python中向 MySQL 表添加列?

先决条件: Python:MySQL 创建表

Python允许将各种数据库服务器与应用程序集成。从Python访问数据库需要一个数据库接口。 MySQL Connector -Python 模块是Python中用于与 MySQL 数据库通信的 API。

SQL的ALTER语句

使用 ALTER 语句,可以添加、删除或修改现有表的列以及修改表约束。

使用 ALTER 语句添加列的语法:

ALTER TABLE table_name
ADD new_column_name column_definition
[FIRST | AFTER column_name];

这里,table_name 是要添加列的表的名称,new_column_name 是要添加的列的名称,column_definition 是要添加的列的数据类型和定义。 FIRST 和 AFTER 是可选语句,它们告诉 MySQL 表中新列的位置。如果未指定此参数,则将新列添加到表的末尾。

执行:

要在Python中向 MySQL 表添加列,首先要与数据库服务器建立连接。然后创建一个游标对象。该游标对象与 MySQL 服务器交互,可用于执行 SQL 语句、获取数据和调用程序等操作。因此,使用此游标对象,执行 ALTER 语句以在末尾或特定位置添加一列。让我们看一些例子以便更好地理解。

使用中的数据库:

我们将使用一个带有学生表的数据库来描述学生的详细信息,例如卷号和姓名。在我们学习向表中添加列之前,先创建一个这样的示例表(插入值是可选的)。

示例 1:

此示例显示在表末尾添加一列。步骤如下:

  • 使用connect()函数建立与数据库服务器的连接。将主机、用户(root 或您的用户名)、密码(如果存在)和数据库参数传递给 connect() 方法。
  • 然后要创建一个游标对象,请使用 cursor()函数。
  • 执行 ALTER 语句将流列添加到学生表。
  • 要检查列是否已添加,请执行并获取 DESC 语句的结果来描述表的结构。

代码:

Python
# Import required packages
import mysql.connector
  
# Establish connection to MySQL database
mydb = mysql.connector.connect(
    host = "localhost",
    user = "username",
    password = "geeksforgeeks",
    database = "College"
)
  
# Create a cursor object
mycursor = mydb.cursor()
  
# MySQL query for adding a column
query = "ALTER TABLE students \
        ADD stream VARCHAR(100) DEFAULT 'CS'"
# Execute the query 
mycursor.execute(query)
  
# Print description of students table
mycursor.execute("desc students")
myresult = mycursor.fetchall()
for row in myresult:
    print(row)
  
# Close database connection
mydb.close()


Python
# Import required packages
import mysql.connector
  
# Establish connection to MySQL database
mydb = mysql.connector.connect(
    host = "localhost",
    user = "username",
    password = "geeksforgeeks",
    database = "College"
)
  
# Create a cursor object
mycursor = mydb.cursor()
  
# MySQL query for adding a column 
# at the beginning of table 
query = "ALTER TABLE students \
        ADD enrollment_year VARCHAR(100) \
        FIRST"
# Execute the query 
mycursor.execute(query)
  
# Print description of students table
mycursor.execute("desc students")
myresult = mycursor.fetchall()
for row in myresult:
    print(row)
  
# Close database connection
mydb.close()


Python
# Import required packages
import mysql.connector
  
# Establish connection to MySQL database
mydb = mysql.connector.connect(
    host = "localhost",
    user = "username",
    password = "geeksforgeeks",
    database = "College"
)
  
# Create a cursor object
mycursor = mydb.cursor()
  
# MySQL query for adding a column 
# after a specific column
query = "ALTER TABLE students \
        ADD email VARCHAR(100) \
        AFTER Name"
# Execute the query 
mycursor.execute(query)
  
# Print description of students table
mycursor.execute("desc students")
myresult = mycursor.fetchall()
for row in myresult:
    print(row)
  
# Close database connection
mydb.close()


输出:

示例 2:

此示例显示在表的开头添加一列。按照与上述示例相同的步骤建立连接并创建游标对象。在 ALTER 语句中使用关键字 FIRST 在学生表的开头附加一列注册年份。

代码:

Python

# Import required packages
import mysql.connector
  
# Establish connection to MySQL database
mydb = mysql.connector.connect(
    host = "localhost",
    user = "username",
    password = "geeksforgeeks",
    database = "College"
)
  
# Create a cursor object
mycursor = mydb.cursor()
  
# MySQL query for adding a column 
# at the beginning of table 
query = "ALTER TABLE students \
        ADD enrollment_year VARCHAR(100) \
        FIRST"
# Execute the query 
mycursor.execute(query)
  
# Print description of students table
mycursor.execute("desc students")
myresult = mycursor.fetchall()
for row in myresult:
    print(row)
  
# Close database connection
mydb.close()

输出:

示例 3:

此示例显示在表中的特定位置添加一列。按照与示例 1 相同的步骤建立连接并创建游标对象。在 ALTER 语句中使用关键字 AFTER 在学生表中的姓名列之后附加一个电子邮件列。

Python

# Import required packages
import mysql.connector
  
# Establish connection to MySQL database
mydb = mysql.connector.connect(
    host = "localhost",
    user = "username",
    password = "geeksforgeeks",
    database = "College"
)
  
# Create a cursor object
mycursor = mydb.cursor()
  
# MySQL query for adding a column 
# after a specific column
query = "ALTER TABLE students \
        ADD email VARCHAR(100) \
        AFTER Name"
# Execute the query 
mycursor.execute(query)
  
# Print description of students table
mycursor.execute("desc students")
myresult = mycursor.fetchall()
for row in myresult:
    print(row)
  
# Close database connection
mydb.close()

输出:

添加列后的数据库:

注意:如果表中有现有值或行,则新列为 Null 或指定的默认值。