2017-12-06 13:34 GMT+01:00 Darko Volaric <li...@darko.org>:

> How it's stored depends on how the messages table is defined (which type
> the message column has been given), which you haven't shown, and whether
> storeMessage quotes the message argument when forming the string. My advice
> is to remove any column type and make sure numbers are not quoted when they
> are inserted into the database.
>

​I should have added those also:
    CREATE TABLE messages(
        messageID   INTEGER PRIMARY KEY AUTOINCREMENT,
        date        TEXT NOT NULL DEFAULT CURRENT_DATE,
        time        TEXT NOT NULL DEFAULT CURRENT_TIME,
        type        TEXT NOT NULL,
        message          NOT NULL
    )

As you see message does not have any type.
​

​storeMessage:
    proc storeMessage {type message} {
        db eval "
          INSERT INTO messages
          (type, message)
          VALUES
          (:type, :message)
    "
    }

I changed it to:
    proc storeMessage {type message} {
        db eval {
          INSERT INTO messages
          (type, message)
          VALUES
          (:type, :message)
        }
    }

But that does not make a difference.
​

On Wed, Dec 6, 2017 at 11:09 AM, Cecil Westerhof <cldwester...@gmail.com>
> wrote:
>
> > I have the following tcl script:
> >     #!/usr/bin/env tclsh
> >
> >     ### Improvements
> >     # Get database from conf-file
> >
> >
> >     package require sqlite3
> >    CREATE TABLE messages(
>         messageID   INTEGER PRIMARY KEY AUTOINCREMENT,
>         date        TEXT NOT NULL DEFAULT CURRENT_DATE,
>         time        TEXT NOT NULL DEFAULT CURRENT_TIME,
>         type        TEXT NOT NULL,
>         message          NOT NULL
>     )
> >
> >     proc getCPUTemp {} {
> >         if {1 != [regexp -all -line {^CPU_TEMP: +\+([0-9.]+)°C } [exec
> > sensors] -> temp]} {
> >             error {Did not get exactly a single temperature line from
> [exec
> > sensors] output}    CREATE TABLE messages(
>         messageID   INTEGER PRIMARY KEY AUTOINCREMENT,
>         date        TEXT NOT NULL DEFAULT CURRENT_DATE,
>         time        TEXT NOT NULL DEFAULT CURRENT_TIME,
>         type        TEXT NOT NULL,
>         message          NOT NULL
>     )
> >         }
> >         return ${temp}
> >     }
> >
> >     proc storeCPUTemp {} {
> >         storeMessage cpu-temp [getCPUTemp]
> >     }
> >
> >     proc storeMessage {type message} {
> >         db eval "
> >           INSERT INTO messages
> >           (type, message)
> >           VALUES
> >           (:type, :message)
> >     "
> >     }    CREATE TABLE messages(
>         messageID   INTEGER PRIMARY KEY AUTOINCREMENT,
>         date        TEXT NOT NULL DEFAULT CURRENT_DATE,
>         time        TEXT NOT NULL DEFAULT CURRENT_TIME,
>         type        TEXT NOT NULL,
>         message          NOT NULL
>     )
> >
> >     proc storeSwap {} {
> >         storeMessage swap-usage [exec swapon --noheadings --show]
> >     }
> >
> >     if {$argc != 1} {
> >         error "Error: ${argv0} DATABASE"
> >     }
> >     sqlite db  [lindex $argv 0]
> >     db     timeout 10000
> >     while {true} {
> >         after [expr {1000 * (60 - [clock seconds] % 60)}]
> >         set   currentMinute [clock format [clock seconds] -format %M]
> >         db transaction {
> >             storeCPUTemp
> >             # At the whole hour we save swap usage
> >             if {${currentMinute} == "00"} {
> >                 storeSwap
> >             }
> >         }
> >     }
> >     # Not really necessary because the above loop never ends
> >     # But I find this more clear and is robuster against change
> >     db close
> >
> > If I enter:
> >     SELECT date
> >     ,      message
> >     ,      TYPEOF(message)
> >     FROM   messages
> >     WHERE  type = 'cpu-temp'
> >        AND date = '2017-12-06'
> >
> > I see that the temperature is saved as text.
> > In the past I had a script like this in Python who would save the
> > temperature as real. What do I need to change to let this script save it
> as
> > real also?
> >
> > --
> > Cecil Westerhof
> > _______________________________________________
> > sqlite-users mailing list
> > sqlite-users@mailinglists.sqlite.org
> > http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
> >
> _______________________________________________
> sqlite-users mailing list
> sqlite-users@mailinglists.sqlite.org
> http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
>



-- 
Cecil Westerhof
_______________________________________________
sqlite-users mailing list
sqlite-users@mailinglists.sqlite.org
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to