First Commit
- Added a script with all FastAPI methods - Added a main.py file to start everything - Generated a config that grabs data from .env
This commit is contained in:
179
.gitignore
vendored
Normal file
179
.gitignore
vendored
Normal file
@ -0,0 +1,179 @@
|
|||||||
|
# ---> Python
|
||||||
|
# Byte-compiled / optimized / DLL files
|
||||||
|
__pycache__/
|
||||||
|
*.py[cod]
|
||||||
|
*$py.class
|
||||||
|
|
||||||
|
############CUSTOM###########
|
||||||
|
/src/test.py
|
||||||
|
responseTester.py
|
||||||
|
|
||||||
|
# C extensions
|
||||||
|
*.so
|
||||||
|
|
||||||
|
# Distribution / packaging
|
||||||
|
.Python
|
||||||
|
build/
|
||||||
|
develop-eggs/
|
||||||
|
dist/
|
||||||
|
downloads/
|
||||||
|
eggs/
|
||||||
|
.eggs/
|
||||||
|
lib/
|
||||||
|
lib64/
|
||||||
|
parts/
|
||||||
|
sdist/
|
||||||
|
var/
|
||||||
|
wheels/
|
||||||
|
share/python-wheels/
|
||||||
|
*.egg-info/
|
||||||
|
.installed.cfg
|
||||||
|
*.egg
|
||||||
|
MANIFEST
|
||||||
|
|
||||||
|
# PyInstaller
|
||||||
|
# Usually these files are written by a python script from a template
|
||||||
|
# before PyInstaller builds the exe, so as to inject date/other infos into it.
|
||||||
|
*.manifest
|
||||||
|
*.spec
|
||||||
|
|
||||||
|
# Installer logs
|
||||||
|
pip-log.txt
|
||||||
|
pip-delete-this-directory.txt
|
||||||
|
|
||||||
|
# Unit test / coverage reports
|
||||||
|
htmlcov/
|
||||||
|
.tox/
|
||||||
|
.nox/
|
||||||
|
.coverage
|
||||||
|
.coverage.*
|
||||||
|
.cache
|
||||||
|
nosetests.xml
|
||||||
|
coverage.xml
|
||||||
|
*.cover
|
||||||
|
*.py,cover
|
||||||
|
.hypothesis/
|
||||||
|
.pytest_cache/
|
||||||
|
cover/
|
||||||
|
|
||||||
|
# Translations
|
||||||
|
*.mo
|
||||||
|
*.pot
|
||||||
|
|
||||||
|
# Django stuff:
|
||||||
|
*.log
|
||||||
|
local_settings.py
|
||||||
|
db.sqlite3
|
||||||
|
db.sqlite3-journal
|
||||||
|
|
||||||
|
# Flask stuff:
|
||||||
|
instance/
|
||||||
|
.webassets-cache
|
||||||
|
|
||||||
|
# Scrapy stuff:
|
||||||
|
.scrapy
|
||||||
|
|
||||||
|
# Sphinx documentation
|
||||||
|
docs/_build/
|
||||||
|
|
||||||
|
# PyBuilder
|
||||||
|
.pybuilder/
|
||||||
|
target/
|
||||||
|
|
||||||
|
# Jupyter Notebook
|
||||||
|
.ipynb_checkpoints
|
||||||
|
|
||||||
|
# IPython
|
||||||
|
profile_default/
|
||||||
|
ipython_config.py
|
||||||
|
|
||||||
|
# pyenv
|
||||||
|
# For a library or package, you might want to ignore these files since the code is
|
||||||
|
# intended to run in multiple environments; otherwise, check them in:
|
||||||
|
# .python-version
|
||||||
|
|
||||||
|
# pipenv
|
||||||
|
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
|
||||||
|
# However, in case of collaboration, if having platform-specific dependencies or dependencies
|
||||||
|
# having no cross-platform support, pipenv may install dependencies that don't work, or not
|
||||||
|
# install all needed dependencies.
|
||||||
|
#Pipfile.lock
|
||||||
|
|
||||||
|
# UV
|
||||||
|
# Similar to Pipfile.lock, it is generally recommended to include uv.lock in version control.
|
||||||
|
# This is especially recommended for binary packages to ensure reproducibility, and is more
|
||||||
|
# commonly ignored for libraries.
|
||||||
|
#uv.lock
|
||||||
|
|
||||||
|
# poetry
|
||||||
|
# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
|
||||||
|
# This is especially recommended for binary packages to ensure reproducibility, and is more
|
||||||
|
# commonly ignored for libraries.
|
||||||
|
# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
|
||||||
|
#poetry.lock
|
||||||
|
|
||||||
|
# pdm
|
||||||
|
# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
|
||||||
|
#pdm.lock
|
||||||
|
# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
|
||||||
|
# in version control.
|
||||||
|
# https://pdm.fming.dev/latest/usage/project/#working-with-version-control
|
||||||
|
.pdm.toml
|
||||||
|
.pdm-python
|
||||||
|
.pdm-build/
|
||||||
|
|
||||||
|
# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
|
||||||
|
__pypackages__/
|
||||||
|
|
||||||
|
# Celery stuff
|
||||||
|
celerybeat-schedule
|
||||||
|
celerybeat.pid
|
||||||
|
|
||||||
|
# SageMath parsed files
|
||||||
|
*.sage.py
|
||||||
|
|
||||||
|
# Environments
|
||||||
|
.env
|
||||||
|
.venv
|
||||||
|
env/
|
||||||
|
venv/
|
||||||
|
ENV/
|
||||||
|
env.bak/
|
||||||
|
venv.bak/
|
||||||
|
|
||||||
|
# Spyder project settings
|
||||||
|
.spyderproject
|
||||||
|
.spyproject
|
||||||
|
|
||||||
|
# Rope project settings
|
||||||
|
.ropeproject
|
||||||
|
|
||||||
|
# mkdocs documentation
|
||||||
|
/site
|
||||||
|
|
||||||
|
# mypy
|
||||||
|
.mypy_cache/
|
||||||
|
.dmypy.json
|
||||||
|
dmypy.json
|
||||||
|
|
||||||
|
# Pyre type checker
|
||||||
|
.pyre/
|
||||||
|
|
||||||
|
# pytype static type analyzer
|
||||||
|
.pytype/
|
||||||
|
|
||||||
|
# Cython debug symbols
|
||||||
|
cython_debug/
|
||||||
|
|
||||||
|
# PyCharm
|
||||||
|
# JetBrains specific template is maintained in a separate JetBrains.gitignore that can
|
||||||
|
# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
|
||||||
|
# and can be added to the global gitignore or merged into this file. For a more nuclear
|
||||||
|
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
|
||||||
|
#.idea/
|
||||||
|
|
||||||
|
# Ruff stuff:
|
||||||
|
.ruff_cache/
|
||||||
|
|
||||||
|
# PyPI configuration file
|
||||||
|
.pypirc
|
||||||
BIN
requirements.txt
Normal file
BIN
requirements.txt
Normal file
Binary file not shown.
72
src/APIapp.py
Normal file
72
src/APIapp.py
Normal file
@ -0,0 +1,72 @@
|
|||||||
|
import DBwork
|
||||||
|
from fastapi import FastAPI, Response, status
|
||||||
|
from pydantic import BaseModel
|
||||||
|
import psycopg2
|
||||||
|
from json import dumps
|
||||||
|
|
||||||
|
|
||||||
|
schema_name = 'harticle'
|
||||||
|
table_name = 'articles'
|
||||||
|
|
||||||
|
app = FastAPI()
|
||||||
|
|
||||||
|
class Entry(BaseModel):
|
||||||
|
url: str
|
||||||
|
rating: int | None = None
|
||||||
|
|
||||||
|
|
||||||
|
@app.get('/api/ping')
|
||||||
|
async def ping():
|
||||||
|
return {'message': 'pong'}
|
||||||
|
|
||||||
|
|
||||||
|
@app.get('/api/rates')
|
||||||
|
async def get_rates():
|
||||||
|
return dumps(DBwork.get_all_entries())
|
||||||
|
|
||||||
|
|
||||||
|
@app.post('/api/article/rate')
|
||||||
|
async def save_rating(entry: Entry, response: Response):
|
||||||
|
conn, cur = DBwork.set_connection()
|
||||||
|
try:
|
||||||
|
DBwork.add_entry(article_url=entry.url,
|
||||||
|
rating=entry.rating,
|
||||||
|
connection=conn,
|
||||||
|
cursor=cur
|
||||||
|
)
|
||||||
|
message = 'success'
|
||||||
|
except psycopg2.Error:
|
||||||
|
response.status_code = status.HTTP_500_INTERNAL_SERVER_ERROR
|
||||||
|
message = 'internal server error'
|
||||||
|
finally:
|
||||||
|
DBwork.close_connection(conn, cur)
|
||||||
|
return {'message': message,
|
||||||
|
'url': entry.url,
|
||||||
|
'rating': entry.rating
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@app.post('/api/article/remove_rate')
|
||||||
|
async def remove_rating(entry: Entry, response: Response):
|
||||||
|
conn, cur = DBwork.set_connection()
|
||||||
|
try:
|
||||||
|
DBwork.delete_entry(entry.url, conn, cur)
|
||||||
|
message = 'success'
|
||||||
|
except psycopg2.Error:
|
||||||
|
response.status_code = status.HTTP_500_INTERNAL_SERVER_ERROR
|
||||||
|
message = 'internal server error'
|
||||||
|
finally:
|
||||||
|
DBwork.close_connection(conn, cur)
|
||||||
|
return {'message': message}
|
||||||
|
|
||||||
|
|
||||||
|
@app.post('/api/articles/get')
|
||||||
|
async def megafunc(entry: Entry, response: Response):
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
|
''' MAIN '''
|
||||||
|
async def main():
|
||||||
|
DBwork.schema_creator(schema_name)
|
||||||
|
DBwork.table_creator(schema_name, table_name)
|
||||||
|
|
||||||
122
src/DBwork.py
Normal file
122
src/DBwork.py
Normal file
@ -0,0 +1,122 @@
|
|||||||
|
import psycopg2
|
||||||
|
import config
|
||||||
|
from loguru import logger
|
||||||
|
|
||||||
|
|
||||||
|
logging_level = config.logging_level
|
||||||
|
logger.add(
|
||||||
|
"sys.stdout",
|
||||||
|
format="{time:YYYY-MM-DD HH:mm:ss.SSS} | {level} | {file}:{line} - {message}",
|
||||||
|
colorize=True,
|
||||||
|
level=logging_level
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
#connection stuff
|
||||||
|
def set_connection():
|
||||||
|
try:
|
||||||
|
connection = psycopg2.connect(
|
||||||
|
dbname = config.db_name,
|
||||||
|
user = config.postgres_user,
|
||||||
|
password = config.postgres_password,
|
||||||
|
host = config.host_name,
|
||||||
|
port = config.port
|
||||||
|
)
|
||||||
|
cursor = connection.cursor()
|
||||||
|
return connection, cursor
|
||||||
|
except psycopg2.Error as e:
|
||||||
|
logger.error(f'Failed to set connection to the PostgreSQL DB: {e.pgerror}')
|
||||||
|
|
||||||
|
|
||||||
|
def close_connection(connection, cursor):
|
||||||
|
try:
|
||||||
|
cursor.close()
|
||||||
|
connection.close()
|
||||||
|
except psycopg2.Error as e:
|
||||||
|
logger.error(f'Failed to close PostgreSQL connection: {e.pgerror}')
|
||||||
|
|
||||||
|
|
||||||
|
#actual DB alters
|
||||||
|
def add_entry(article_url, rating):
|
||||||
|
connection, cursor = set_connection()
|
||||||
|
try:
|
||||||
|
cursor.execute("INSERT INTO harticle.articles (article_url, rating) VALUES (%s, %s);", (article_url, rating,))
|
||||||
|
connection.commit()
|
||||||
|
logger.info('An entry has been written to the PGSQL DB successfully')
|
||||||
|
except psycopg2.Error as e:
|
||||||
|
logger.error(f'Failed to write an entry for article \'{article_url}\': {e.pgerror}')
|
||||||
|
finally:
|
||||||
|
close_connection(connection, cursor)
|
||||||
|
|
||||||
|
|
||||||
|
def delete_entry(article_url, connection, cursor):
|
||||||
|
connection, cursor = set_connection()
|
||||||
|
try:
|
||||||
|
cursor.execute("DELETE FROM harticle.articles WHERE article_url = %s;", (article_url,))
|
||||||
|
connection.commit()
|
||||||
|
logger.info(f'Rating for article \'{article_url}\' was cleared successfully')
|
||||||
|
except psycopg2.Error as e:
|
||||||
|
logger.error(f'Failed to clear a rating entry for article \'{article_url}\': {e.pgerror}')
|
||||||
|
finally:
|
||||||
|
close_connection(connection, cursor)
|
||||||
|
|
||||||
|
|
||||||
|
# def delete_rating(article_url, connection, cursor):
|
||||||
|
# close_connection(connection, cursor)
|
||||||
|
# try:
|
||||||
|
# cursor.execute("UPDATE harticle.articles SET rating = NULL WHERE article_url = %s;", (article_url,))
|
||||||
|
# connection.commit()
|
||||||
|
# logger.info(f'Rating for article \'{article_url}\' was cleared successfully')
|
||||||
|
# close_connection(connection, cursor)
|
||||||
|
# except psycopg2.Error as e:
|
||||||
|
# logger.error(f'Failed to clear a rating entry for article \'{article_url}\': {e.pgerror}')
|
||||||
|
|
||||||
|
|
||||||
|
def get_all_entries():
|
||||||
|
connection, cursor = set_connection()
|
||||||
|
try:
|
||||||
|
cursor.execute('SELECT article_url, rating FROM harticle.articles;')
|
||||||
|
entries = cursor.fetchall()
|
||||||
|
logger.info('All entry pairs have been retrieved successfully')
|
||||||
|
return entries
|
||||||
|
except psycopg2.Error as e:
|
||||||
|
logger.error(f'Failed to fetch DB entries: {e.pgerror}')
|
||||||
|
finally:
|
||||||
|
close_connection(connection, cursor)
|
||||||
|
|
||||||
|
|
||||||
|
#'create if no any' type functions for schema and table
|
||||||
|
def schema_creator(schema_name):
|
||||||
|
conn, cur = set_connection()
|
||||||
|
try:
|
||||||
|
cur.execute(f'CREATE SCHEMA IF NOT EXISTS {schema_name};')
|
||||||
|
conn.commit()
|
||||||
|
logger.info(f'Successfully created schema {schema_name} if it didn\'t exist yet')
|
||||||
|
except psycopg2.Error as e:
|
||||||
|
logger.error(f'Error during schema creation: {e}')
|
||||||
|
finally:
|
||||||
|
close_connection(conn, cur)
|
||||||
|
|
||||||
|
|
||||||
|
def table_creator(schema_name, table_name):
|
||||||
|
conn, cur = set_connection()
|
||||||
|
try:
|
||||||
|
cur.execute(f'''
|
||||||
|
CREATE TABLE IF NOT EXISTS {schema_name}.{table_name}
|
||||||
|
(
|
||||||
|
id SERIAL PRIMARY KEY,
|
||||||
|
article_url VARCHAR(3000) UNIQUE NOT NULL,
|
||||||
|
rating INT CHECK (rating < 2)
|
||||||
|
)
|
||||||
|
|
||||||
|
TABLESPACE pg_default;
|
||||||
|
|
||||||
|
ALTER TABLE IF EXISTS {schema_name}.{table_name}
|
||||||
|
OWNER to {config.postgres_user};
|
||||||
|
''')
|
||||||
|
conn.commit()
|
||||||
|
logger.info(f'Successfully created table {table_name} in schema {schema_name} if it didn\'t exist yet')
|
||||||
|
except psycopg2.Error as e:
|
||||||
|
logger.error(f'Error during table creation: {e}')
|
||||||
|
finally:
|
||||||
|
close_connection(conn, cur)
|
||||||
9
src/config.py
Normal file
9
src/config.py
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
from decouple import config
|
||||||
|
|
||||||
|
|
||||||
|
db_name = config('DB_NAME')
|
||||||
|
postgres_user = config('POSTGRES_USER')
|
||||||
|
postgres_password = config('POSTGRES_PASSWORD')
|
||||||
|
host_name = config('HOST_NAME')
|
||||||
|
port = config('PORT')
|
||||||
|
logging_level = config('LOGGING_LEVEL')
|
||||||
7
src/main.py
Normal file
7
src/main.py
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
import asyncio
|
||||||
|
import APIapp
|
||||||
|
import uvicorn
|
||||||
|
|
||||||
|
|
||||||
|
asyncio.run(APIapp.main())
|
||||||
|
uvicorn.run("APIapp:app", host="127.0.0.1", port=8000, log_level="info")
|
||||||
118
sys.stdout
Normal file
118
sys.stdout
Normal file
@ -0,0 +1,118 @@
|
|||||||
|
2025-08-29 20:42:34.367 | INFO | DBwork.py:26 - Successfully set connection to the PostgreSQL DB
|
||||||
|
2025-08-29 20:47:34.345 | INFO | DBwork.py:26 - Successfully set connection to the PostgreSQL DB
|
||||||
|
2025-08-29 20:47:34.403 | INFO | DBwork.py:65 - Successfully created schema harticle if it didn't exist yet
|
||||||
|
2025-08-29 20:47:34.476 | INFO | DBwork.py:26 - Successfully set connection to the PostgreSQL DB
|
||||||
|
2025-08-29 20:47:34.495 | ERROR | DBwork.py:91 - Error during table creation: syntax error at or near "article_url"
|
||||||
|
LINE 5: article_url VARCHAR(3000) UNIQUE NOT NULL,
|
||||||
|
^
|
||||||
|
|
||||||
|
2025-08-29 20:48:24.020 | INFO | DBwork.py:26 - Successfully set connection to the PostgreSQL DB
|
||||||
|
2025-08-29 20:48:24.099 | INFO | DBwork.py:65 - Successfully created schema harticle if it didn't exist yet
|
||||||
|
2025-08-29 20:48:24.454 | INFO | DBwork.py:26 - Successfully set connection to the PostgreSQL DB
|
||||||
|
2025-08-29 20:48:24.477 | ERROR | DBwork.py:91 - Error during table creation: syntax error at or near ")"
|
||||||
|
LINE 7: )
|
||||||
|
^
|
||||||
|
|
||||||
|
2025-08-29 20:49:37.475 | INFO | DBwork.py:26 - Successfully set connection to the PostgreSQL DB
|
||||||
|
2025-08-29 20:49:37.498 | INFO | DBwork.py:65 - Successfully created schema harticle if it didn't exist yet
|
||||||
|
2025-08-29 20:49:37.574 | INFO | DBwork.py:26 - Successfully set connection to the PostgreSQL DB
|
||||||
|
2025-08-29 20:49:37.602 | ERROR | DBwork.py:91 - Error during table creation: syntax error at or near "to"
|
||||||
|
LINE 12: OWNER to postgres_user;
|
||||||
|
^
|
||||||
|
|
||||||
|
2025-08-29 20:50:31.676 | INFO | DBwork.py:26 - Successfully set connection to the PostgreSQL DB
|
||||||
|
2025-08-29 20:50:31.703 | INFO | DBwork.py:65 - Successfully created schema harticle if it didn't exist yet
|
||||||
|
2025-08-29 20:50:31.790 | INFO | DBwork.py:26 - Successfully set connection to the PostgreSQL DB
|
||||||
|
2025-08-29 20:50:31.855 | INFO | DBwork.py:89 - Successfully created table articles in schema harticle if it didn't exist yet
|
||||||
|
2025-08-29 21:08:43.249 | INFO | DBwork.py:26 - Successfully set connection to the PostgreSQL DB
|
||||||
|
2025-08-29 21:08:43.274 | INFO | DBwork.py:65 - Successfully created schema harticle if it didn't exist yet
|
||||||
|
2025-08-29 21:08:43.321 | INFO | DBwork.py:26 - Successfully set connection to the PostgreSQL DB
|
||||||
|
2025-08-29 21:08:43.343 | INFO | DBwork.py:89 - Successfully created table articles in schema harticle if it didn't exist yet
|
||||||
|
2025-08-29 21:09:01.219 | INFO | DBwork.py:26 - Successfully set connection to the PostgreSQL DB
|
||||||
|
2025-08-29 21:09:01.253 | INFO | DBwork.py:65 - Successfully created schema harticle if it didn't exist yet
|
||||||
|
2025-08-29 21:09:01.320 | INFO | DBwork.py:26 - Successfully set connection to the PostgreSQL DB
|
||||||
|
2025-08-29 21:09:01.349 | INFO | DBwork.py:89 - Successfully created table articles in schema harticle if it didn't exist yet
|
||||||
|
2025-08-29 21:12:16.086 | INFO | DBwork.py:26 - Successfully set connection to the PostgreSQL DB
|
||||||
|
2025-08-29 21:12:16.109 | INFO | DBwork.py:65 - Successfully created schema harticle if it didn't exist yet
|
||||||
|
2025-08-29 21:12:16.161 | INFO | DBwork.py:26 - Successfully set connection to the PostgreSQL DB
|
||||||
|
2025-08-29 21:12:16.200 | INFO | DBwork.py:89 - Successfully created table articles in schema harticle if it didn't exist yet
|
||||||
|
2025-08-29 21:12:39.738 | INFO | DBwork.py:26 - Successfully set connection to the PostgreSQL DB
|
||||||
|
2025-08-29 21:12:40.970 | INFO | DBwork.py:26 - Successfully set connection to the PostgreSQL DB
|
||||||
|
2025-08-29 21:16:42.028 | INFO | DBwork.py:26 - Successfully set connection to the PostgreSQL DB
|
||||||
|
2025-08-29 21:16:42.051 | INFO | DBwork.py:66 - Successfully created schema harticle if it didn't exist yet
|
||||||
|
2025-08-29 21:16:42.052 | INFO | DBwork.py:36 - Successfully closed connection to the PostgreSQL DB
|
||||||
|
2025-08-29 21:16:42.176 | INFO | DBwork.py:26 - Successfully set connection to the PostgreSQL DB
|
||||||
|
2025-08-29 21:16:42.268 | INFO | DBwork.py:90 - Successfully created table articles in schema harticle if it didn't exist yet
|
||||||
|
2025-08-29 21:16:42.269 | INFO | DBwork.py:36 - Successfully closed connection to the PostgreSQL DB
|
||||||
|
2025-08-29 21:16:47.546 | INFO | DBwork.py:26 - Successfully set connection to the PostgreSQL DB
|
||||||
|
2025-08-29 21:45:13.302 | INFO | DBwork.py:26 - Successfully set connection to the PostgreSQL DB
|
||||||
|
2025-08-29 21:45:13.348 | INFO | DBwork.py:66 - Successfully created schema harticle if it didn't exist yet
|
||||||
|
2025-08-29 21:45:13.349 | INFO | DBwork.py:36 - Successfully closed connection to the PostgreSQL DB
|
||||||
|
2025-08-29 21:45:13.515 | INFO | DBwork.py:26 - Successfully set connection to the PostgreSQL DB
|
||||||
|
2025-08-29 21:45:13.573 | INFO | DBwork.py:90 - Successfully created table articles in schema harticle if it didn't exist yet
|
||||||
|
2025-08-29 21:45:13.573 | INFO | DBwork.py:36 - Successfully closed connection to the PostgreSQL DB
|
||||||
|
2025-08-29 22:01:03.641 | INFO | DBwork.py:26 - Successfully set connection to the PostgreSQL DB
|
||||||
|
2025-08-29 22:01:03.672 | INFO | DBwork.py:66 - Successfully created schema harticle if it didn't exist yet
|
||||||
|
2025-08-29 22:01:03.673 | INFO | DBwork.py:36 - Successfully closed connection to the PostgreSQL DB
|
||||||
|
2025-08-29 22:01:03.801 | INFO | DBwork.py:26 - Successfully set connection to the PostgreSQL DB
|
||||||
|
2025-08-29 22:01:03.882 | INFO | DBwork.py:90 - Successfully created table articles in schema harticle if it didn't exist yet
|
||||||
|
2025-08-29 22:01:03.884 | INFO | DBwork.py:36 - Successfully closed connection to the PostgreSQL DB
|
||||||
|
2025-08-30 00:26:49.887 | INFO | DBwork.py:26 - Successfully set connection to the PostgreSQL DB
|
||||||
|
2025-08-30 00:32:29.541 | INFO | DBwork.py:26 - Successfully set connection to the PostgreSQL DB
|
||||||
|
2025-08-30 00:32:29.562 | INFO | DBwork.py:75 - Successfully created schema harticle if it didn't exist yet
|
||||||
|
2025-08-30 00:32:29.562 | INFO | DBwork.py:36 - Successfully closed connection to the PostgreSQL DB
|
||||||
|
2025-08-30 00:32:29.604 | INFO | DBwork.py:26 - Successfully set connection to the PostgreSQL DB
|
||||||
|
2025-08-30 00:32:29.625 | INFO | DBwork.py:99 - Successfully created table articles in schema harticle if it didn't exist yet
|
||||||
|
2025-08-30 00:32:29.626 | INFO | DBwork.py:36 - Successfully closed connection to the PostgreSQL DB
|
||||||
|
2025-08-30 00:32:35.060 | INFO | DBwork.py:26 - Successfully set connection to the PostgreSQL DB
|
||||||
|
2025-08-30 00:32:35.075 | ERROR | DBwork.py:66 - Failed to fetch DB entries: ERROR: relation "articles" does not exist
|
||||||
|
LINE 1: SELECT article_url, rating FROM articles;
|
||||||
|
^
|
||||||
|
|
||||||
|
2025-08-30 01:11:28.088 | INFO | DBwork.py:26 - Successfully set connection to the PostgreSQL DB
|
||||||
|
2025-08-30 01:13:41.424 | INFO | DBwork.py:26 - Successfully set connection to the PostgreSQL DB
|
||||||
|
2025-08-30 01:13:41.442 | ERROR | DBwork.py:48 - Failed to write an entry for article 'test': ERROR: relation "articles" does not exist
|
||||||
|
LINE 1: INSERT INTO articles VALUES ('test', 1);
|
||||||
|
^
|
||||||
|
|
||||||
|
2025-08-30 01:13:41.443 | INFO | DBwork.py:36 - Successfully closed connection to the PostgreSQL DB
|
||||||
|
2025-08-30 01:16:21.430 | INFO | DBwork.py:26 - Successfully set connection to the PostgreSQL DB
|
||||||
|
2025-08-30 01:16:21.450 | ERROR | DBwork.py:48 - Failed to write an entry for article 'test': ERROR: relation "articles" does not exist
|
||||||
|
LINE 1: INSERT INTO Articles VALUES ('test', 1);
|
||||||
|
^
|
||||||
|
|
||||||
|
2025-08-30 01:16:21.452 | INFO | DBwork.py:36 - Successfully closed connection to the PostgreSQL DB
|
||||||
|
2025-08-30 01:27:16.292 | INFO | DBwork.py:26 - Successfully set connection to the PostgreSQL DB
|
||||||
|
2025-08-30 01:27:16.312 | ERROR | DBwork.py:48 - Failed to write an entry for article 'test': ERROR: invalid input syntax for type integer: "test"
|
||||||
|
LINE 1: INSERT INTO harticle.articles VALUES ('test', 1);
|
||||||
|
^
|
||||||
|
|
||||||
|
2025-08-30 01:27:16.312 | INFO | DBwork.py:36 - Successfully closed connection to the PostgreSQL DB
|
||||||
|
2025-08-30 01:35:20.928 | INFO | DBwork.py:26 - Successfully set connection to the PostgreSQL DB
|
||||||
|
2025-08-30 01:35:20.965 | INFO | DBwork.py:46 - An entry has been written to the PGSQL DB successfully
|
||||||
|
2025-08-30 01:35:20.966 | INFO | DBwork.py:36 - Successfully closed connection to the PostgreSQL DB
|
||||||
|
2025-08-30 01:38:27.104 | INFO | DBwork.py:26 - Successfully set connection to the PostgreSQL DB
|
||||||
|
2025-08-30 01:38:27.123 | ERROR | DBwork.py:48 - Failed to write an entry for article 'test': ERROR: duplicate key value violates unique constraint "articles_article_url_key"
|
||||||
|
DETAIL: Key (article_url)=(test) already exists.
|
||||||
|
|
||||||
|
2025-08-30 01:38:27.124 | INFO | DBwork.py:36 - Successfully closed connection to the PostgreSQL DB
|
||||||
|
2025-08-30 01:41:24.219 | INFO | DBwork.py:26 - Successfully set connection to the PostgreSQL DB
|
||||||
|
2025-08-30 01:41:24.255 | INFO | DBwork.py:46 - An entry has been written to the PGSQL DB successfully
|
||||||
|
2025-08-30 01:41:24.256 | INFO | DBwork.py:36 - Successfully closed connection to the PostgreSQL DB
|
||||||
|
2025-08-30 01:46:31.107 | INFO | DBwork.py:26 - Successfully set connection to the PostgreSQL DB
|
||||||
|
2025-08-30 01:46:31.137 | INFO | DBwork.py:46 - An entry has been written to the PGSQL DB successfully
|
||||||
|
2025-08-30 01:50:05.814 | INFO | DBwork.py:26 - Successfully set connection to the PostgreSQL DB
|
||||||
|
2025-08-30 01:50:05.851 | INFO | DBwork.py:55 - Rating for article 'test2' was cleared successfully
|
||||||
|
2025-08-30 01:50:05.851 | INFO | DBwork.py:36 - Successfully closed connection to the PostgreSQL DB
|
||||||
|
2025-08-30 01:50:32.270 | INFO | DBwork.py:26 - Successfully set connection to the PostgreSQL DB
|
||||||
|
2025-08-30 01:50:32.301 | INFO | DBwork.py:55 - Rating for article 'test1' was cleared successfully
|
||||||
|
2025-08-30 01:50:32.301 | INFO | DBwork.py:36 - Successfully closed connection to the PostgreSQL DB
|
||||||
|
2025-08-30 01:50:35.079 | INFO | DBwork.py:26 - Successfully set connection to the PostgreSQL DB
|
||||||
|
2025-08-30 01:50:35.110 | INFO | DBwork.py:55 - Rating for article 'test' was cleared successfully
|
||||||
|
2025-08-30 01:50:35.110 | INFO | DBwork.py:36 - Successfully closed connection to the PostgreSQL DB
|
||||||
|
2025-08-30 02:04:55.458 | INFO | DBwork.py:80 - All entry pairs have been retrieved successfully
|
||||||
|
2025-08-30 02:05:13.018 | INFO | DBwork.py:80 - All entry pairs have been retrieved successfully
|
||||||
|
2025-08-30 02:06:51.642 | INFO | DBwork.py:80 - All entry pairs have been retrieved successfully
|
||||||
|
2025-08-30 02:10:40.955 | INFO | DBwork.py:80 - All entry pairs have been retrieved successfully
|
||||||
|
2025-08-30 02:11:48.088 | INFO | DBwork.py:80 - All entry pairs have been retrieved successfully
|
||||||
|
2025-08-30 02:12:19.839 | INFO | DBwork.py:80 - All entry pairs have been retrieved successfully
|
||||||
Reference in New Issue
Block a user