codex cli 可在 windows 10 下将自然语言需求自动转为 sqlalchemy orm 模型、生成建表 sql 并初始化 sqlite 数据库。需先安装 codex-cli≥2.8.0,再用自然语言描述生成 models/user.py,最后通过 db_setup.py 执行 create_all() 创建 app.db 表结构。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

在 Windows 10 环境下用 Codex CLI 将自然语言需求直接转为 SQLAlchemy ORM 模型、自动生成建表 SQL 并完成本地 SQLite 数据库初始化,全程无需手写 CREATE TABLE 或手动定义字段类型,避免因类型错配、主键遗漏或外键缺失导致的迁移失败。
安装并验证 Codex CLI 环境
打开 PowerShell(非 CMD),以管理员身份运行,执行:
pip install codex-cli sqlalchemy[asyncio] sqlite3
安装完成后输入 codex --version,确认输出版本号 ≥ 2.8.0。低于该版本不支持 ORM 推断模式,【必须升级】,否则后续步骤会报 ModuleNotFoundError: No module named 'codex.orm'。
这一步操作起来很简单,直接把命令复制粘贴进去回车就行。
用自然语言描述表结构,生成 ORM 模型文件
在项目根目录新建文件夹 models/,然后执行:
codex orm generate --desc "用户表包含ID(主键)、姓名(字符串,最大50)、邮箱(唯一)、注册时间(默认当前时间)、是否激活(布尔,默认True)" --output models/user.py
命令执行后,models/user.py 会自动生成完整类定义,含 Base 继承、__tablename__、Column 声明及 func.now() 引入。注意:若提示 func 未定义,说明 Codex 版本过低或未自动注入 from sqlalchemy import func —— 此时需手动在文件顶部补上该行。
生成的代码中 String(50) 和 nullable=False 已按规范写入,不用再逐个检查;但 SQLite 不校验长度,生产环境换 MySQL/PostgreSQL 时务必保留该声明,否则迁移会失败。
通过本地 Codex 或 OpenClaw OAuth 凭证直接调用 ChatGPT/Codex Responses 的 image_generation 工具来生成或编辑光栅图像,然后保存
配置数据库连接并触发建表
新建 db_setup.py,内容如下:
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from models.user import Base
engine = create_engine('sqlite:///app.db', echo=True)
Base.metadata.create_all(engine)
保存后,在终端运行 python db_setup.py。控制台将打印出完整 CREATE TABLE users (...) 语句,并在当前目录生成 app.db 文件。
这一步不可逆:如果 app.db 已存在且结构不同,create_all() 不会修改已有表,也不会报错——它只会跳过已存在的表。所以首次运行前请确保无同名文件,或手动删除旧 app.db。
验证表结构是否生成成功
方法一:用 DB Browser for SQLite 打开 app.db → 查看 Tables → 点击 users → 切到 Browse Data 标签页,确认空表可写入。
方法二:在 Python 中快速验证:
from models.user import User
from sqlalchemy.orm import sessionmaker
from sqlalchemy import create_engine
engine = create_engine('sqlite:///app.db')
Session = sessionmaker(bind=engine)
session = Session()
print(session.execute("PRAGMA table_info(users)").all())
输出应为包含 id、name、email、created_at、is_active 字段的五元组列表,每项含字段名、类型、是否为空等信息。若某字段缺失或类型错误,说明自然语言描述歧义导致推断偏差,需回退到第二步修改描述词,例如把“注册时间”改为“注册时间戳(datetime 类型)”。










