Devadutta Ghat's Blog

Day 2: Backup your SQLite database to GitHub – ChatGPT vs. Claude

Today, I got access to Anthropic’s Claude so why not use that to solve a problem I have?

prompt

Can you write a python backup script to commit and push a sqllite db into git using the github access tokens? I actually only want to commit and push the file if it has changed since the last time I committed it. can you just use requests and the github rest api?

output

import requests
import os
import datetime

# GitHub access token 
access_token = 'YOUR_ACCESS_TOKEN'

# Repository name 
repo_name = 'YOUR_REPO_NAME'

# Database file path
db_path = 'database.sqlite'

# Get last commit SHA for the database file
url = f'https://api.github.com/repos/{repo_name}/contents/{db_path}'
headers = {'Authorization': f'token {access_token}'}
response = requests.get(url, headers=headers)
last_sha = response.json()['sha']

# Get latest commit for the database file 
latest_commit = os.stat(db_path).st_mtime
timestamp = datetime.datetime.fromtimestamp(latest_commit)

# Check if the database file has changed since last commit
if timestamp > datetime.datetime.strptime(last_sha, '%Y-%m-%d %H:%M:%S'):
    # Read the database file
    with open(db_path, 'rb') as f:
        content = f.read()
        
    # Commit and push the changes 
    url = f'https://api.github.com/repos/{repo_name}/contents/{db_path}'
    payload = {'message': f'Commit as of {timestamp}', 
               'content': content.decode('utf-8'), 
               'sha': last_sha}
    headers = {'Authorization': f'token {access_token}'}
    response = requests.put(url, json=payload, headers=headers)

ChatGPT vs. Claude?

When I asked ChatGPT the same question, it came out with a more verbose answer. Probably Claude is default prompted to be more succinct code writer to save on tokens outputted, maybe because they don’t want a slack bot to put in a wall of text. Maybe.

Number of lines
ChatGPT ▏   62 █████████████████████████
 Claude ▏   36 ██████████████▌
Number of words
ChatGPT ▏  174 █████████████████████████
 Claude ▏  124 █████████████████▊

So yeah, in my totally unscientific test, Claude outputted 41% shorter code, but I think I will stick to ChatGPT for now as the whole style of writing code function by function has so many advantages that you’ll see in future examples with langchain.