| 116 | |
| 117 | legal_sql_identifier = re.compile(r'^[A-Za-z0-9#_$]+') |
| 118 | def _persist_dataframe(self, raw, conn, user_ns): |
| 119 | if not DataFrame: |
| 120 | raise ImportError("Must `pip install pandas` to use DataFrames") |
| 121 | pieces = raw.split() |
| 122 | if len(pieces) != 2: |
| 123 | raise SyntaxError("Format: %sql [connection] persist <DataFrameName>") |
| 124 | frame_name = pieces[1].strip(';') |
| 125 | frame = eval(frame_name, user_ns) |
| 126 | if not isinstance(frame, DataFrame) and not isinstance(frame, Series): |
| 127 | raise TypeError('%s is not a Pandas DataFrame or Series' % frame_name) |
| 128 | table_name = frame_name.lower() |
| 129 | table_name = self.legal_sql_identifier.search(table_name).group(0) |
| 130 | frame.to_sql(table_name, conn.session.engine) |
| 131 | return 'Persisted %s' % table_name |
| 132 | |
| 133 | |
| 134 | def load_ipython_extension(ip): |