title: Column is marked as a member of the primary key for table, but has no Python-side or server-side default generator
body: <p>Here is a table I'm making:</p>
  
  <pre><code> URL = 'postgresql://{}:{}@{}:{}/{}'
   DB_URL = URL.format(
       DB_USER_NAME,
       DB_PASSWORD,
       DB_HOST,
       str(DB_PORT),
       DB_NAME)
  
   print("creating db engine...")
  
   # Connect to database
   CONN = create_engine(DB_URL, client_encoding="UTF-8")
   META_DATA = MetaData(bind=CONN, reflect=True)
  
   print("creating users table")
   TABLE_EXISTS = CONN.dialect.has_table(CONN, "users")
   USERS_TABLE = None
  
   # Create tables
   if not TABLE_EXISTS:
       USERS_TABLE = \
           Table("test_user", META_DATA,
                 Column("id", Integer, Sequence("user_id_seq"), primary_key=True),
                 Column("first_name", String(255)),
                 Column("last_name", String(255))
                )
       META_DATA.create_all(CONN)
   else:
       USERS_TABLE = Table("test_user", META_DATA, autoload=True)
  
  
   if USERS_TABLE != None:
       print("done")
   else:
       raise Exception("Halp")
  
   # Insertions
   INS_EXPRESSION = USERS_TABLE.insert(None).values(first_name="Foo", last_name="Bar")
  
   CONN.execute(INS_EXPRESSION)
  
   # Selections
   SELECTION = select([USERS_TABLE])
   RESULT = CONN.execute(SELECTION)
   for row in RESULT:
       print(row)
  </code></pre>
  
  <p>When I run this code and do an insert, it works the first time. But if I run it a second time I get this error:</p>
  
  <pre><code>SAWarning: Column 'test_user.id' is marked as a member of the primary key for table 'test_user', but has no Python-side or server-side default generator indicated, nor does it indicate 'autoincrement=True' or 'nullable=True', and no explicit value is passed. Primary key columns typically may not store NULL.
  </code></pre>
  
  <p>the failing row is logged as:</p>
  
  <pre><code>DETAIL:  Failing row contains (null, Foo, Bar).
  </code></pre>
  
  <p>What am I doing wrong??</p>