[fly-iot Feifanwulian] (14): 오픈 소스 프로젝트인 Actorcloud 프로젝트를 다시 시작하고 docker-compose를 사용하여 성공적으로 시작한 다음 MySQL 데이터베이스를 전환하고 플라스크 배포를 사용하여 데이터베이스 테이블을 생성합니다.

머리말


이 기사의 원본 링크는 다음과 같습니다:
https://blog.csdn.net/freewebsys/article/details/108971807
fly-iot 칼럼:
https://blog.csdn.net/freewebsys/category_12219758.html

블로거의 허락 없이는 어떠한 복제도 허용되지 않습니다.
블로거의 CSDN 주소: https://blog.csdn.net/freewebsys
블로거의 Nuggets 주소: https://juejin.cn/user/585379920479288
블로거의 Zhihu 주소: https://www.zhihu.com/ 사람/자유웹시스템

영상 시연 주소

https://www.bilibili.com/video/BV1Ze411q7fS/

[fly-iot] (2): 오픈 소스 프로젝트 Actorcloud 프로젝트를 다시 시작하고, MySQL 데이터베이스를 전환하고, 플라스크 배포 방어자를 사용하고, 데이터베이스 테이블을 초기화합니다.

1. actorcloud 프로젝트 관련 오픈소스 프로젝트 코드를 재구성합니다.


원본 프로젝트: https://github.com/actorcloud/ActorCloud

프로젝트는 모두 Apache 프로토콜을 사용하는 오픈 소스입니다.
이전 프로젝트도 Apache 프로토콜에 따른 오픈 소스였습니다.

ActorCloud는 기업에 원스톱 플랫폼 서비스를 제공하는 저전력 IoT 네트워크용 IoT 플랫폼입니다. 안전성과 신뢰성을 바탕으로 ActorCloud는 장치에 다중 프로토콜 액세스를 위한 통신 기능은 물론 장치 데이터 및 메시지 흐름 관리 기능을 제공합니다.

플랫폼은 다수의 장치를 연결 및 관리하기 위한 기본 장치 관리 기능을 제공하고 장치 메시지 통신 및 데이터 수집 지속성을 실현하며 규칙 엔진과 데이터 시각화 관리를 통합하고 여러 권한 수준으로 관리 및 제어 API를 유연하게 개방합니다. API 애플리케이션을 통해 레이어를 신속하게 개발하여 장비의 다중 터미널 액세스 및 원격 제어를 달성할 수 있습니다.

IoT Hub: 단말기가 클라우드에 연결될 수 있도록 안정적인 양방향 연결 채널을 구축하고 인증, 프로토콜 구문 분석 및 메시지 라우팅을 수행합니다. 장치 관리: 단말기 등록 활성화 및 수명 주기 관리를 통해 상태, 장애 및 트래픽
에 대한 지속적인 모니터링을 제공합니다.
엔진: 고속 지속성, 실시간 분석, 규칙 트랜잭션 처리 및 획득한 터미널 메시지의 시각적 표시
애플리케이션 활성화: 터미널 SDK, APP SDK, 개방적이고 풍부한 REST API 인터페이스, 통합 메시지 푸시 인터페이스 제공.

프로젝트 주소:

프런트엔드 프로젝트 주소:
https://gitee.com/fly-iot/fly-iot-frontend
백엔드 프로젝트 주소:
https://gitee.com/fly-iot/fly-iot-backend-python
docker- 작성 프로젝트 주소 :
https://gitee.com/fly-iot/docker-compose

2. pymysql==1.0.2를 사용하여 드라이버를 설치합니다.

pymysql==1.0.2
에 해당하는 SQL 연결 :

mysql+pymysql://root:mysqliot@mysql-iot:3306/fly_iot
即可

3. SQL 문제를 해결하려면 to_char를 date_format으로 전환하세요.

sqlalchemy.exc.OperationalError: (pymysql.err.OperationalError) (1305, 'FUNCTION fly_iot.to_char does not exist')
[SQL: SELECT to_char(device_count_hour.`countTime`, %(to_char_2)s) AS to_char_1, sum(device_count_hour.`deviceCount`) AS sum_1 
FROM device_count_hour 
WHERE device_count_hour.`tenantID` = %(tenantID_1)s AND device_count_hour.`countTime` > %(countTime_1)s GROUP BY to_char(device_count_hour.`countTime`, %(to_char_3)s) ORDER BY to_char(device_count_hour.`countTime`, %(to_char_4)s)]
[parameters: {
   
   'to_char_2': 'HH24:00', 'tenantID_1': 'PghAoyPJ9', 'countTime_1': datetime.datetime(2023, 12, 31, 16, 10, 37, 632378), 'to_char_3': 'HH24:00', 'to_char_4': 'HH24:00'}]

报错:FUNCTION .to_char가 존재하지 않습니다(to_char与date_format)

4. 데이터베이스에 테이블이 존재하는지 확인하는 문제 해결


    # https://database.guide/5-ways-to-check-if-a-table-exists-in-mysql/#:~:text=Another%20way%20to%20check%20whether%20a%20table%20exists,TABLE_TYPE%20LIKE%20%27BASE%20TABLE%27%20AND%20TABLE_NAME%20%3D%20%27Artists%27%3B
    # SELECT * FROM `system_info` ;
    table_check_sql = """
    SHOW TABLE STATUS FROM fly_iot WHERE Name = 'system_info';
    """
    is_exist = db.engine.execute(
        text(table_check_sql).execution_options(autocommit=True)
    ).first()

그런 다음 비표준 필드를 바꿉니다.

db.String,  替换成 db.String(200),
db.Column(db.String) 替换成 db.Column(db.String(200))

db.Column(JSONB) 替换成 db.Column(db.JSON)

db.Column(JSONB, 替换成 db.Column(db.JSON,

5. PostgreSQL 플러그인 TimescaleDB


TimescaleDB는 오픈 소스 PostgreSQL 시계열 데이터베이스 확장입니다. PostgreSQL의 강력한 기능을 기반으로 TimescaleDB는 시간과 공간에 따른 자동 파티셔닝과 완벽한 SQL 지원을 제공할 수 있습니다.
TimescaleDB는 기존 관계형 데이터베이스처럼 전체 SQL을 지원할 뿐만 아니라 NoSQL 데이터베이스처럼 확장 가능합니다. 다음과 같은 장점이 있습니다:
간단하고 사용하기 쉽습니다.


PostgreSQL은 PostgreSQL 연결 및 사용을 위한 클라이언트 및 도구를 변경하지 않고도 모든 SQL 인터페이스(보조 인덱스, 비시간 기반 집계, 하위 쿼리, JOIN, 창 기능 포함)를 기본적으로 지원합니다 .
시간 지향 기능, API 기능 및
강력한 최적화 데이터 지원 유지 전략

링크: https://juejin.cn/post/7004641103320203301

3. 요약


오픈 소스 프로젝트인 Actorcloud 프로젝트를 다시 시작하고 docker-compose를 사용하여 성공적으로 시작합니다.
원본 프로젝트 : https://github.com/actorcloud/ActorCloud
전체 프로젝트는 제가 작성한 것이 아니고, 정보만 정리한 뒤 환경을 어지럽혀 프로젝트를 실행시켰습니다.
docker-compose를 사용하여 관련 프런트엔드, 백엔드, 데이터베이스를 실행하지만 현재 MQTT 서비스가 없습니다.
계속해서 열심히 작업하여 수정된 프로젝트 코드와 배포 파일이 gitee에 올려지고 오픈 소스화되었습니다.
나는 이 프로젝트의 포터이고, 모두가 함께 공부하고 연구할 수 있습니다. 프로젝트는 모두 Apache 프로토콜을 사용하는 오픈 소스입니다.
이전 프로젝트도 Apache 프로토콜에 따른 오픈 소스였습니다.

이 기사의 원본 링크는 다음과 같습니다:
https://blog.csdn.net/freewebsys/article/details/108971807

여기에 이미지 설명을 삽입하세요.

추천

출처blog.csdn.net/freewebsys/article/details/135331039