# SQL database ID column not iterable

**URL:** <https://forum.inductiveautomation.com/t/sql-database-id-column-not-iterable/18527>\
**Category:** Ignition\
**Tags:** python, database, scripting\
**Created:** [June 19, 2018, 2:55pm UTC](https://forum.inductiveautomation.com/t/sql-database-id-column-not-iterable/18527 "2018-06-19T14:55:21Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![awaege](https://avatars.discourse-cdn.com/v4/letter/a/bc8723/32.png) [@awaege](https://forum.inductiveautomation.com/u/awaege)\
**Post date:** [June 19, 2018, 2:55pm UTC](https://forum.inductiveautomation.com/t/sql-database-id-column-not-iterable/18527/1 "2018-06-19T14:55:21Z")

</div>

Hi, I’m trying to access a dataset object that I created in a script. The object is made up of the row id’s from a sql table. Here is the code:

```
for row in dataset:
dBdeviceID = row[3]
```
  
I want to take the rows from this set and add them to an array so that I can use them in another part of my script but every time I try to access the “dBdeviceID” set I get an error saying it is imutable, that it can’t be iterated over etc. Does anyone know how to do this?

Thanks

---

<div class="post-metadata">

**Author:** ![ethomason](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/ethomason/32/43338_2.png) [@ethomason](https://forum.inductiveautomation.com/u/ethomason)\
**Post date:** [June 19, 2018, 3:25pm UTC](https://forum.inductiveautomation.com/t/sql-database-id-column-not-iterable/18527/2 "2018-06-19T15:25:34Z")

</div>

Is it a dataset or Pydataset?

[https://docs.inductiveautomation.com/display/DOC79/Datasets](https://docs.inductiveautomation.com/display/DOC79/Datasets)

---

<div class="post-metadata">

**Author:** ![awaege](https://avatars.discourse-cdn.com/v4/letter/a/bc8723/32.png) [@awaege](https://forum.inductiveautomation.com/u/awaege)\
**Post date:** [June 19, 2018, 3:34pm UTC](https://forum.inductiveautomation.com/t/sql-database-id-column-not-iterable/18527/3 "2018-06-19T15:34:47Z")

</div>

It is a Pydataset that was converted from an ignition dataset.

---

<div class="post-metadata">

**Author:** ![JGJohnson](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/jgjohnson/32/29582_2.png) [@JGJohnson](https://forum.inductiveautomation.com/u/JGJohnson)\
**Post date:** [June 19, 2018, 4:20pm UTC](https://forum.inductiveautomation.com/t/sql-database-id-column-not-iterable/18527/4 "2018-06-19T16:20:44Z")

</div>

In the code that you posted you are repeatedly assigning a value to the variable dBdeviceID.

If dBdeviceID is defined as an array or a list you should use append().

```auto
for row in dataset:
    dBdeviceID.append(row[3])

```

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [June 19, 2018, 4:37pm UTC](https://forum.inductiveautomation.com/t/sql-database-id-column-not-iterable/18527/5 "2018-06-19T16:37:21Z")

</div>

Or use a list comprehension one-liner:

```auto
Column3 = [row[3] for row in dataset]

```

If the original dataset inherits from an [AbstractDataset](http://files.inductiveautomation.com/sdk/javadoc/ignition79/793/com/inductiveautomation/ignition/common/AbstractDataset.html) (likely), you can skip the conversion and do this:

```auto
Column3 = list(originalDS.getColumnAsList(3))

```

The latter is blistering fast, if that matters in your case.
