RuntimeError: internal error setting the array
Vertices need an x, y and z coordinate.  z was  set to zero and not used. Then there was faces in mesh.from_pydata(...) instead of edges, of which only  a couple were added as you were iterating through iterations.  On top of that you were using i as an iterator in both your inner and outer loop.

To convert between degrees and radians you can use math.degress(rad) or math.radians(deg)

Here is some code I put together a while back to arrange objects into spirals, edited with yours to create a spiral mesh.  

Also look into the addon add_curve_extra_objects and in particular add_curve_spirals.py

import bpy
from math import sin, cos, pi
def spiral(segs=30):
    verts = []
    edges = []
    z=0
    n = 3
    position = bpy.context.scene.cursor_location
    print(bpy.context.scene.cursor_location)
    a = 0.5
    for i in range(segs):
        t = n * 2 * pi * (i)/ segs
        # parametric eqn of a helix
        x, y, z = (a * sin(t), a  * cos(t),  a * t / n)

        verts.append((x,y,z))

    for i in range(len(verts) - 1):
        edges.append((i, i+1))
    mesh = bpy.data.meshes.new("Spiral")
    object = bpy.data.objects.new("Spiral", mesh)
    print(verts, edges)
    object.location = bpy.context.scene.cursor_location
    bpy.context.scene.objects.link(object)
    mesh.from_pydata(verts,edges, [])
    mesh.update(calc_edges=True)

spiral()