python+selenium recordsによるデータベース操作


class ConnectDb:
    """
      records     
    """
    @staticmethod
    def connect(filepath=None) -> records.Database:
        """
        :param filepath:     
        :return:       
        """
        if filepath is None:
            file = INIFILEPATH
        else:
            file = filepath
        host = Readini.getvalue("Database", "dbhost", file)
        port = Readini.getvalue("Database", "dbport", file)
        user = Readini.getvalue("Database", "dbusername", file)
        passwd = Readini.getvalue("Database", "dbpasswd", file)
        db = Readini.getvalue("Database", "dbname")
        db_url = 'mysql+pymysql://' + user + ':' + passwd + '@' + str(host) + ':' + str(port) + '/' + db
        # connect = records.Database('mysql+pymysql://   :  @sqlURl:sql  /  ')
        connect = records.Database(db_url)

        return connect
        
        
def insert_run_record(self, project_name, device_sn, device_static, run_value):
    """
        
    :param project_name:     , config        ,   PROJECTNAME
    :param device_sn:    
    :param device_static:     
    :param run_value:     
    """
    try:
        value = {
                 'device_sn': device_sn,
                 'device_static': device_static,
                 'run_value': run_value,
                 'create_time': datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
                 }

        connect.query(
            "insert into selenium_chanpin_znsd_runvalue(project_id, device_sn,device_static,run_value,create_time) "
            "values(:project_id," +
            "(SELECT project_id FROM selenium_project where project_name = '" + project_name + "')" +
            ",:device_static, :run_value, :create_time)", **value)
    except Exception as e:
        print("sql    " + str(e))
        
        

        
def select_run_value(self, device_sn) -> str:
    """
                       
    :param device_sn:   sn
    :return:     
    """
    try:

        select_value_sql = "SELECT run_value FROM selenium_chanpin_znsd_runvalue where device_sn='" + device_sn + \
                           " 'ORDER BY create_time DESC limit 1"
        rows = connect.query(select_value_sql)
        return rows.first(as_ordereddict=True)["run_value"]
    except Exception as e:
        print("  sql  " + str(e))

依存パッケージPyMySQLとrecordsが必要
recordsでデータベースを接続するには、recordsプラグイン、recordsをインストールする必要があります.Databaseはデータベースに接続し、Databaseオブジェクトを返します.主にrecordsを使用します.Database.queryは、データの挿入、データの照会などの操作を行います
データを挿入するには、対応するフィールド値:valueを設定し、sqlのinsertのvaluesで(:フィールド値)で対応するvalueを直接読み取り、sql文に他のテーブルをクエリーして得られた値がある場合、sqlに対応するselectを接続する必要があります.
検索文、sqlをつなぎ合わせて、connectを実行します.query(sql)はクラスのオブジェクトを返します.このオブジェクトには、パラメータas_を追加できる3つの一般的なメソッドall/first/oneがあります.dict=True(結果を辞書に変換)as_ordereddict=True(結果を辞書に変換してソート)では、allはすべてを返し、firstは最初の結果であり、oneは唯一の結果である.