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;
在这里,子句可以是: ADD 、 RENAME 、 CHANGE 、 DROP 、 MODIFY
每个子句的用法如下:
- ADD :用于添加新列
- RENAME :用于重命名表
- 改变: 用于重命名列
- DROP :用于删除一列
- MODIFY :用于修改列
带有 add 子句的查询语法:
ALTER TABLE table_name ADD column_name DATATYPE CONSTRAINTS ;
带有重命名子句的查询语法:
ALTER TABLE table_name RENAME new_name_of_table ;
带有 change 子句的查询语法:
ALTER TABLE table_name CHANGE old_column new_column DATATYPE CONSTRAINTS ;
带有 drop 子句的查询语法:
ALTER TABLE table_name DROP column_name;
带有修改子句的查询语法:
ALTER TABLE table_name MODIFY column_name DATATYPE CONSTRAINTS ;
让我们看一个上面的例子:
示例 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)
输出: