Save prices to database (sqlite)
This commit is contained in:
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
*.db
|
||||||
|
__pycache__
|
||||||
18
fioul.py
18
fioul.py
@@ -1,10 +1,13 @@
|
|||||||
#! /usr/bin/env python3
|
#! /usr/bin/env python3
|
||||||
|
|
||||||
# from bottle import hook, request, route, run, static_file, view
|
# from bottle import hook, request, route, run, static_file, view
|
||||||
|
|
||||||
|
from datetime import date
|
||||||
|
from models import Price, IntegrityError
|
||||||
|
|
||||||
import requests
|
import requests
|
||||||
import json
|
import json
|
||||||
|
|
||||||
|
|
||||||
query = """query {
|
query = """query {
|
||||||
getProductGroups(category: 1, zipcode: 1184) {
|
getProductGroups(category: 1, zipcode: 1184) {
|
||||||
name
|
name
|
||||||
@@ -28,8 +31,21 @@ def get_price():
|
|||||||
return product["default_price_tax"]
|
return product["default_price_tax"]
|
||||||
|
|
||||||
|
|
||||||
|
def store_current_price():
|
||||||
|
today = date.today()
|
||||||
|
# Get price returns a float (price per L)
|
||||||
|
# We store an int (price per m^3)
|
||||||
|
price = int(get_price() * 1000)
|
||||||
|
try:
|
||||||
|
Price.create(date=today, price=price)
|
||||||
|
except IntegrityError:
|
||||||
|
print("Price for today already in database, not writing")
|
||||||
|
return price
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
print(get_price())
|
print(get_price())
|
||||||
|
store_current_price()
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
|||||||
24
models.py
Normal file
24
models.py
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
from peewee import SqliteDatabase
|
||||||
|
from peewee import Model
|
||||||
|
from peewee import AutoField, DateField, IntegerField
|
||||||
|
|
||||||
|
from peewee import IntegrityError
|
||||||
|
|
||||||
|
# SQLite database using WAL journal mode and 64MB cache.
|
||||||
|
db = SqliteDatabase("fioul.db")
|
||||||
|
|
||||||
|
|
||||||
|
class BaseModel(Model):
|
||||||
|
class Meta:
|
||||||
|
database = db
|
||||||
|
|
||||||
|
|
||||||
|
class Price(BaseModel):
|
||||||
|
id = AutoField()
|
||||||
|
date = DateField(unique=True)
|
||||||
|
price = IntegerField()
|
||||||
|
|
||||||
|
|
||||||
|
def init():
|
||||||
|
db.connect()
|
||||||
|
db.create_tables([Price])
|
||||||
Reference in New Issue
Block a user