📜  Python SQLAlchemy – 更新表结构

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

Python SQLAlchemy – 更新表结构

在本文中,我们将使用 sqlalchemy 模块更新表的结构。

表的结构包括列的名称、列的数据类型、约束、键等,我们将在这篇文章中更新。

安装要求:

让我们首先通过在终端中运行以下 pip 命令来安装 SQLAlchemy 模块:

pip install sqlalchemy pymysql

注意: pymysql 是 sqlalchemy 的依赖项,我们需要为这篇文章安装它

使用的数据库:

逐步实施

第 1 步:导入和连接

第一步包括导入 sqlalchemy 模块并连接到数据库。我们可以通过以下代码来做到这一点:

Python3
from sqlalchemy import create_engine
  
user, password, host, database = 'root', '123', 'localhost', 'geeksforgeeks'
engine = create_engine(
    url=f'mysql+pymysql://{user}:{password}@{host}/{database}?charset=utf8')
  
connection = engine.connect()


Python3
table_name = 'students'


Python3
from sqlalchemy import create_engine
  
user, password, host, database = 'root', '123', 'localhost', 'geeksforgeeks'
engine = create_engine(
    url=f'mysql+pymysql://{user}:{password}@{host}/{database}?charset=utf8')
  
connection = engine.connect()
  
table_name = 'students'
  
query = f'ALTER TABLE {table_name} ADD gender ENUM("m","f") ;'
connection.execute(query)


Python3
from sqlalchemy import create_engine
  
user, password, host, database = 'root', '123', 'localhost', 'geeksforgeeks'
engine = create_engine(
    url=f'mysql+pymysql://{user}:{password}@{host}/{database}?charset=utf8')
  
connection = engine.connect()
  
table_name = 'students'
  
query = f'ALTER TABLE {table_name} DROP gender ;'
connection.execute(query)


Python3
from sqlalchemy import create_engine
  
user, password, host, database = 'root', '123', 'localhost', 'geeksforgeeks'
engine = create_engine(
    url=f'mysql+pymysql://{user}:{password}@{host}/{database}?charset=utf8')
  
connection = engine.connect()
  
table_name = 'students'
  
query = f'ALTER TABLE {table_name} CHANGE sno id INT;'
connection.execute(query)


Python3
from sqlalchemy import create_engine
  
user, password, host, database = 'root', '123', 'localhost', 'geeksforgeeks'
engine = create_engine(
    url=f'mysql+pymysql://{user}:{password}@{host}/{database}?charset=utf8')
  
connection = engine.connect()
  
table_name = 'students'
  
query = f'ALTER TABLE {table_name} MODIFY id INT PRIMARY KEY;'
connection.execute(query)


步骤 2:定义表名

现在让我们定义我们将使用的表名:

Python3

table_name = 'students'

第 3 步:定义和执行查询

所以现在我们将定义 sql 查询来更新表的结构。为了执行我们的任务,我们将使用用于更新表的 sql 的 alter 命令。

修改命令的语法:

ALTER TABLE table_name CLAUSE change_in_structure;

在这里,子句可以是: ADDRENAMECHANGEDROPMODIFY

每个子句的用法如下:

  • ADD :用于添加新列
  • RENAME :用于重命名表
  • 改变 用于重命名列
  • DROP :用于删除一列
  • MODIFY :用于修改列

带有 add 子句的查询语法:

带有重命名子句的查询语法:

带有 change 子句的查询语法:

带有 drop 子句的查询语法:

带有修改子句的查询语法:

让我们看一个上面的例子:

示例 1:添加新列

让我们在表中添加一个名为“gender”的新列,它可以接受 2 个值,即“m”代表男性,“f”代表女性。

Python3

from sqlalchemy import create_engine
  
user, password, host, database = 'root', '123', 'localhost', 'geeksforgeeks'
engine = create_engine(
    url=f'mysql+pymysql://{user}:{password}@{host}/{database}?charset=utf8')
  
connection = engine.connect()
  
table_name = 'students'
  
query = f'ALTER TABLE {table_name} ADD gender ENUM("m","f") ;'
connection.execute(query)

输出:

示例 2:删除列

让我们删除我们在上面这个例子中创建的“性别”列。

Python3

from sqlalchemy import create_engine
  
user, password, host, database = 'root', '123', 'localhost', 'geeksforgeeks'
engine = create_engine(
    url=f'mysql+pymysql://{user}:{password}@{host}/{database}?charset=utf8')
  
connection = engine.connect()
  
table_name = 'students'
  
query = f'ALTER TABLE {table_name} DROP gender ;'
connection.execute(query)

输出:

示例 3:重命名列

让我们借助 sql 的ALTER命令中的CHANGE子句将列“sno”重命名为“id”。

Python3

from sqlalchemy import create_engine
  
user, password, host, database = 'root', '123', 'localhost', 'geeksforgeeks'
engine = create_engine(
    url=f'mysql+pymysql://{user}:{password}@{host}/{database}?charset=utf8')
  
connection = engine.connect()
  
table_name = 'students'
  
query = f'ALTER TABLE {table_name} CHANGE sno id INT;'
connection.execute(query)

输出:

示例 4:修改列

让我们修改我们的列“id”并使其成为主键。

Python3

from sqlalchemy import create_engine
  
user, password, host, database = 'root', '123', 'localhost', 'geeksforgeeks'
engine = create_engine(
    url=f'mysql+pymysql://{user}:{password}@{host}/{database}?charset=utf8')
  
connection = engine.connect()
  
table_name = 'students'
  
query = f'ALTER TABLE {table_name} MODIFY id INT PRIMARY KEY;'
connection.execute(query)

输出