VSCodeで開発している間はVSCodeから開発中のPythonスクリプトを実行しているが、最終的にはWindowsターミナルでコマンドとしてPythonスクリプトを実行する必要がある。開発中にも同じことをする必要が出てくるので、今回は生成AIにPythonスクリプトをWindowsにおいてコマンドとして実行するための方法を質問し、作業および動作確認を行う方法を取り上げる。
連載「生成AI×プログラミング」のこれまでの回はこちらを参照。
これまでの成果物
これまでの成果物をまとめておくと次のようになる。
ファイル名 | 内容 |
---|---|
todo_app.py | CUIの処理を行うファイル。ユーザーが直接操作する。 |
todo_db_manager.py | SQLiteデータベースとのやり取りを担当するファイル。 |
todo_app.py
import datetime
from todo_db_manager import create_todo_table, add_todo, get_todos
def main():
# テーブルの作成
create_todo_table()
# Todoの追加
add_todo("買い物", "牛乳を買う", priority=1)
add_todo("プロジェクトの提出", "プレゼンテーション資料を完成させる", due_date=datetime.datetime(2024, 6, 10), priority=2)
# すべてのTodoを取得して表示
todos = get_todos()
for todo in todos:
print(todo)
if __name__ == "__main__":
main()
todo_db_manager.py
import sqlite3
from datetime import datetime
DB_FILE = "todos.db"
def create_todo_table():
conn = sqlite3.connect(DB_FILE)
cursor = conn.cursor()
cursor.execute('''
CREATE TABLE IF NOT EXISTS todos (
id INTEGER PRIMARY KEY,
title TEXT,
description TEXT,
due_date DATE,
priority INTEGER,
completed INTEGER
)
''')
conn.commit()
conn.close()
def add_todo(title, description=None, due_date=None, priority=3):
conn = sqlite3.connect(DB_FILE)
cursor = conn.cursor()
cursor.execute('''
INSERT INTO todos (title, description, due_date, priority, completed)
VALUES (?, ?, ?, ?, ?)
''', (title, description, due_date, priority, 0))
conn.commit()
conn.close()
def get_todos():
conn = sqlite3.connect(DB_FILE)
cursor = conn.cursor()
cursor.execute('''
SELECT * FROM todos
''')
todos = cursor.fetchall()
conn.close()
return todos
列名 | 型 | 内容 |
---|---|---|
id | INTEGER (主キー) | Todoアイテムの一意識別子。 |
title | TEXT | Todoアイテムのタイトル。 |
description | TEXT | Todoアイテムの詳細な説明。 |
due_date | DATE | Todoアイテムの期日。 |
priority | INTEGER | Todoアイテムの優先度。1が最も高い優先度で、3が最も低い優先度。 |
completed | INTEGER | Todoアイテムが完了したかどうかを示すフラグ。0は未完了、1は完了。 |
これまではVSCodeの実行機能を使ってtodo_app.pyを実行してきたが、最終的にはPowerShellやコマンドプロンプトから実行したいので、単体のコマンドとして実行できるようにする必要がある。
今回はこうした部分の設定方法や実装方法をChatGPTに聞いていく。