본문 바로가기

파이썬/에러기록

파이썬애니웨어+Flask 사용법 / data import 에러 해결기

구분 버전
내PC OS window10

 

회원가입은 간단하니 생략 ㅎㅎ

 

[파이썬애니웨어+Flask]

파이썬 애니웨어 Web 탭에서

파이썬 버전과 Flask 선택해서 만들어주면

Files 탭에 생긴 mysite\flask_app.py 를

내가 만든 코드로 수정한 뒤

https://[내계정이름].pythonanywhere.com/

 

https://sthong.pythonanywhere.com/

 

sthong.pythonanywhere.com

들어가 보면

Hello, World! 나타나면 성공

 

[pythonanywhere data.csv import]

pythonanywhere 쪽 mysql db에다가

데이터를 넣어주는 작업

에러경우 1.

mysql> LOAD DATA LOCAL INFILE "/home/sthong/save.csv" INTO TABLE lotto_num COLUMNS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' ESCAPED BY '"' LINES TERMINATED BY '\n' IGNORE 1 LINES (turn);
ERROR 2068 (HY000): LOAD DATA LOCAL INFILE file request rejected due to restrictions on access.
mysql>

database 탭에서 mysql 배쉬로 데이터 넣으면 발생하는 에러다.

이경우는

파이썬애니웨어 besh 실행

아래명령어를 실행하면 된다

mysql -h [Database host address] -u [Username]  [Your databases Name] -p --local-infile=1

(파이썬애니웨어탭참고)

14:14 ~ $ mysql -h sthong.mysql.pythonanywhere-services.com -u sthong 'sthong$home' -p --local-infile=1
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 36607852
Server version: 5.7.34-log Source distribution
Copyright (c) 2000, 2022, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>

 

에러경우 2.

데이터가 들어갔는데

db를 넣으니 Null, None 이런 식이다..

아무래도 pythonanywhere mysql 버전과

내 mysql 버전이 달라 csv 인코딩 방식이

달라서 그런 거 같다

다른 방법으로 넣는 걸 찾아보았다.

 

[pythonanywhere data.sql import]

내 mysql db 백업 방법

 mysql -u root -p

암호입력 후 로그인

  show databases;

로 백업할 db 이름 확인

exit

로 나간 뒤

cd [.sql 저장할 경로로 이동후]
  mysqldump -u root -p [db이름] > [저장하고픈이름].sql

 

 backup.sql 로 저장했다 치고

파이썬애니웨어에 올린 뒤

SOURCE backup.sql;

이렇게 하면

ERROR 1273 (HY000): Unknown collation: 'utf8mb4_0900_ai_ci'

이런 에러가 뜬다.

csv도 제대로 안 들어갔으니 sql엔

인코딩 방식까지 정해져 있어서 그런가 보다

그래서 필요한 부분만 수동으로 했다.

(난 로또 번호 테이블을 만들었다)

CREATE TABLE `lotto_num` (
  `turn` int NOT NULL,
  `num1` int DEFAULT NULL,
  `num2` int DEFAULT NULL,
  `num3` int DEFAULT NULL,
  `num4` int DEFAULT NULL,
  `num5` int DEFAULT NULL,
  `num6` int DEFAULT NULL,
  PRIMARY KEY (`turn`)
)

.sql 열어서 테이블 만드는 쿼리 복사 해서

테이블 만들고 

INSERT INTO `lotto_num` VALUES   (1,10,23,29,33,37,40),(2,9,13,21,25,32,42) ... ,(1051,21,26,30,32,33,35),(1052,5,17,26,27,35,38);

데이터 넣어주는 걸로 성공