| 143 | |
| 144 | @classmethod |
| 145 | def make_insert_sql_from_data(cls, table, rows): |
| 146 | if not rows: |
| 147 | raise Exception('At least one row is required') |
| 148 | if not table.cols: |
| 149 | raise Exception('At least one col is required') |
| 150 | |
| 151 | sql = 'INSERT INTO %s VALUES ' % table.name |
| 152 | for row_idx, row in enumerate(rows): |
| 153 | if row_idx > 0: |
| 154 | sql += ', ' |
| 155 | sql += '(' |
| 156 | for col_idx, col in enumerate(table.cols): |
| 157 | if col_idx > 0: |
| 158 | sql += ', ' |
| 159 | val = row[col_idx] |
| 160 | if val is None: |
| 161 | sql += 'NULL' |
| 162 | elif issubclass(col.type, Timestamp): |
| 163 | sql += "TIMESTAMP '%s'" % val |
| 164 | elif issubclass(col.type, Char): |
| 165 | sql += "'%s'" % val.replace("'", "''") |
| 166 | else: |
| 167 | sql += str(val) |
| 168 | sql += ')' |
| 169 | return sql |
| 170 | |
| 171 | def __init__(self, conn, cursor): |
| 172 | self._conn = conn |