python讀取文件內容並寫入遠端mysql數據庫

#!/usr/bin/python
# -*- coding: UTF-8 -*-
import MySQLdb
import os


class MysqlServer(object):
    def __init__(self, host, port, user, password):
        self.host = host
        self.port = port
        self.user = user
        self.passwd = password
        self.conn = self.__create_connection()

    def __create_connection(self):
        #和遠端mysql建立連接
        conn = MySQLdb.connect(host=self.host, port=self.port, user=self.user, passwd=self.passwd, charset='utf8')
        #選取數據庫
        conn.select_db("db_name")
        return conn

    def close(self):
        #關閉連接
        self.conn.close()

    def execute(self, sql):
        #執行sql語句
        cursor = self.conn.cursor()
        cursor.execute(sql)
        self.conn.commit()


def get_comment_data_info(file_path):
    #獲取文件內容
    with open(file_path, 'r') as file:
        comment_data_info = file.read()
    return comment_data_info


def write_data_to_db(data):
    #判斷文件是否存在
    if not os.path.exists(data['data_info']['file_path']):
        return "file: %s not exist" % data['data_info']['file_path']
    comment_data_info = get_comment_data_info(data['data_info']['file_path'])

    #生成sql語句
    sql = "INSERT INTO user_info(username, course_id, score, comment) VALUES " "('%s', '%s', '%d', '%s')" % \
          (data['data_info']['username'], data['data_info']['course_id'], data['data_info']['score'], comment_data_info)

    try:
        mysql_server = MysqlServer(data['db_info']['host'], data['db_info']['port'], data['db_info']['user'],
                                   data['db_info']['passwd'])
        mysql_server.execute(sql)
    except Exception as e:
        return str(e)
    return "insert success"


def main():
    data = {
        #遠端數據庫信息
        "db_info": {"host": "192.168.100.100",
                    "port": 3306,
                    "user": "root",
                    "passwd": "abcdefg", },
        #需要插入的信息以及文件路徑
        "data_info": {"username": "user1",
                      "course_id": "100",
                      "score": 100,
                      "file_path": "/test1233"}
    }
    status = write_data_to_db(data)
    print(status)


if __name__ == "__main__":
    main()

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章