SQLAlchemy
怎么对表的字段进行:添加、修改、删除?除了直接写原生 SQL
以外,现在创建表很容易单我没找到修改表的 alter
方法?有谁用过么?
SQLAlchemy
怎么对表的字段进行:添加、修改、删除?除了直接写原生 SQL
以外,现在创建表很容易单我没找到修改表的 alter
方法?有谁用过么?
在 SQLAlchemy 中,对表的字段进行添加、修改、删除主要通过 ALTER TABLE
SQL 语句来实现,但 SQLAlchemy 本身并不直接支持 ALTER TABLE
。因此,如果你想要修改一个已经存在的表的字段,需要重新创建这个表。在创建新表时,可以使用 Column
对象的 alter_existing
属性来修改已存在的字段。
下面是一些基本的代码示例:
from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String
engine = create_engine('sqlite:///example.db')
metadata = MetaData()
# 创建表
def create_table():
table = Table('my_table', metadata,
Column('id', Integer, primary_key=True),
Column('name', String),
Column('age', Integer),
)
table.create(engine)
# 修改表
def alter_table():
metadata.reflect(engine)
table = Table('my_table', metadata, autoload_with=engine)
new_table = Table('new_table', metadata,
table.columns.copy(),
copy_from=table,
)
new_table.create(engine)
metadata.remove(table)
metadata.add_table(new_table)
在上面的代码中,create_table
函数用于创建新的表,alter_table
函数用于修改已存在的表。需要注意的是,在 alter_table
函数中,我们首先通过 metadata.reflect
方法获取了已存在的表的元数据,然后创建了一个新的表,并将新表的列设置为已存在表的列的复制。然后,我们使用 metadata.remove
方法删除了旧的表,使用 metadata.add_table
方法添加了新的表。
4 回答4.4k 阅读✓ 已解决
4 回答3.8k 阅读✓ 已解决
1 回答2.8k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
1 回答4.5k 阅读✓ 已解决
1 回答3.8k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
理论上这不属于
SQLAlchemy
的职责范围,可找一下migrations
相关主题。另外可参见:https://docs.djangoproject.com/en/4.2/topics/migrations/开发阶段,可以直接清除所有表重新创建。
已经上线的,通常不会这么做,而是要做上线SQL审核执行等流程,还要做兼容之类。
只将
SQLAlchemy
作为一个ORM就好。