#python #mysql #pandas
#python #mysql #pandas
Вопрос:
Я сделал df.to_sql(name=’phishingdataset’,con= con,if_exists=’append’,index=False)
где в моем наборе данных нет столбца с именем «index», где, как и при создании таблицы в mysql, он создает один столбец с этим именем. И когда я пытаюсь получить доступ к этому столбцу, он выдает ошибку.
Я попытался выполнить поиск в документах docs и mysql docs, но такой ссылки такого рода нет.
df.to_sql(name='phishingdataset',con=con,if_exists='append',index=False)
В запросе mysql:-
select * from phishingdataset where index=1;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'index=1' at line 1
Где моя схема :-
----------------------------- ------------ ------ ----- --------- -------
| Field | Type | Null | Key | Default | Extra |
----------------------------- ------------ ------ ----- --------- -------
| index | bigint(20) | YES | | NULL | |
| having_IPhaving_IP_Address | bigint(20) | YES | | NULL | |
| URLURL_Length | bigint(20) | YES | | NULL | |
| Shortining_Service | bigint(20) | YES | | NULL | |
| having_At_Symbol | bigint(20) | YES | | NULL | |
| double_slash_redirecting | bigint(20) | YES | | NULL | |
| Prefix_Suffix | bigint(20) | YES | | NULL | |
| having_Sub_Domain | bigint(20) | YES | | NULL | |
| SSLfinal_State | bigint(20) | YES | | NULL | |
| Domain_registeration_length | bigint(20) | YES | | NULL | |
| Favicon | bigint(20) | YES | | NULL | |
| port | bigint(20) | YES | | NULL | |
| HTTPS_token | bigint(20) | YES | | NULL | |
| Request_URL | bigint(20) | YES | | NULL | |
| URL_of_Anchor | bigint(20) | YES | | NULL | |
| Links_in_tags | bigint(20) | YES | | NULL | |
| SFH | bigint(20) | YES | | NULL | |
| Submitting_to_email | bigint(20) | YES | | NULL | |
| Abnormal_URL | bigint(20) | YES | | NULL | |
| Redirect | bigint(20) | YES | | NULL | |
| on_mouseover | bigint(20) | YES | | NULL | |
| RightClick | bigint(20) | YES | | NULL | |
| popUpWidnow | bigint(20) | YES | | NULL | |
| Iframe | bigint(20) | YES | | NULL | |
| age_of_domain | bigint(20) | YES | | NULL | |
| DNSRecord | bigint(20) | YES | | NULL | |
| web_traffic | bigint(20) | YES | | NULL | |
| Page_Rank | bigint(20) | YES | | NULL | |
| Google_Index | bigint(20) | YES | | NULL | |
| Links_pointing_to_page | bigint(20) | YES | | NULL | |
| Statistical_report | bigint(20) | YES | | NULL | |
| Result | bigint(20) | YES | | NULL | |
----------------------------- ------------ ------ ----- --------- -------
32 rows in set (0.00 sec)
Комментарии:
1.
index
это зарезервированное слово практически в любой базе данных, совместимой с SQL. В MySQL вы можете обернуть имя обратными метками при ссылке. Теперь, почему Pandas создает этот столбец вto_sql
, это другой и любопытный вопрос. Что находится в содержимом? Индекс фрейма данных?2. ах, содержимое фрейма данных, на самом деле у него есть заголовок с именем index , но я уже удалил этот столбец перед вставкой в db. И именно поэтому странно, что this .to_sql создал его самостоятельно даже после установки index = false. Теперь, когда он создан, каким может быть запрос для доступа к этому индексу?
3. Вы переназначили фрейм данных, когда удалили столбец? Пожалуйста, опубликуйте эту
drop
строку. Кроме того, я только что упомянул о том, чтобы обернуть индекс в обратные метки в вашем запросе, потому что это зарезервированное слово.4. Я не переназначал фрейм данных , это была ошибка. Я думал, что мне не нужно этого делать. Но теперь это сделано и работает нормально. Спасибо за помощь. 🙂