Rows are tuples, not objects with named attributes per column. In your case, name is the value at index 1, the server_id the value at index 0:
d = {}
for row in cursor:
d[row[0]] = row[1]
print(d)
You could make this easier on yourself by using tuple assignments:
d = {}
for server_id, name in cursor:
d[server_id] = name
print(d)
However, because you want to use the first element as the key, and the second as the value, you could make this even simpler and just pass the cursor directly to a dict() call:
d = dict(cursor)
This pulls in each (server_id, name) tuple and turns it into a key and value pair in a new dictionary.
Note that I deliberately used the name d for the dictionary in the above examples. Had I used dict instead, then we couldn't use dict(cursor) anymore!
dict=...as it risks overwriting functionality and ending up with very spooky results