PostgreSQL Sequence Updates

I had a problem with PostgreSQL pgdump recently.  My setval() calls were all set to ’1′.  I whipped up this quick script to fix things:

#!/usr/bin/env python

DB_NAME = "my_db"

from subprocess import Popen, PIPE
import re

exclude = [ 'tablename', 'rows' ]
tp = re.compile( '[^a-z_]' )
ts = Popen( [ "/usr/bin/psql", DB_NAME, "-c SELECT tablename FROM pg_tables WHERE tablename NOT LIKE 'pg_%' AND tablename NOT LIKE 'sql_%' ORDER BY tablename" ], stdout=PIPE ).communicate()[ 0 ].split( ' ' )

tables = []
for t in ts:
    t = tp.sub( '', t )
    if len( t ) == 0 or t in exclude:
        continue
    tables.append( t )

for t in tables:
    sql = "SELECT pg_catalog.setval( pg_get_serial_sequence( '%s', 'id' ), ( SELECT MAX( id ) FROM %s ) + 1 );" % ( t, t )
    print Popen( [ "/usr/bin/psql", DB_NAME, "-c %s" % sql ], stdout=PIPE ).communicate()[ 0 ]
view raw file1.py This Gist is brought to you using Simple Gist Embed.
Be Sociable, Share!

Django Apache vhost

I thought someone else may need a complete working example, all in one chunk of code:

<VirtualHost 127.0.0.1>
  ServerName mysite
  <Location />
    SetHandler python-program
    PythonHandler django.core.handlers.modpython
    PythonPath "[ '/Users/destiney/django' ] + sys.path"
    SetEnv DJANGO_SETTINGS_MODULE mysite.settings
    SetEnv PYTHON_EGG_CACHE /tmp/.python-eggs
    PythonDebug On
    Order deny,allow
    Allow from all
  </Location>
  Alias /media /usr/src/django_src/django/contrib/admin/media
  <Location "/media/">
    SetHandler None
  </Location>
</VirtualHost>

Be Sociable, Share!