Commit 532720bc by logesh.n

inserting into postgres

parent 3349b44f
import uvicorn
if __name__ == "__main__":
try:
uvicorn.run("main:app", port=8000)
except Exception as e:
print(e)
......@@ -11,8 +11,9 @@ redis_database_two = 2
redis_port = 6379
[postgres]
postgres_port = 5433
postgres_port = 5432
postgres_password = admin
postgres_username = postgres
postgres_host = localhost
postgres_database = postgres
from fastapi import FastAPI, Header, HTTPException
import paho.mqtt.client as mqtt
from fastapi import FastAPI, HTTPException
from scripts.core.handlers.insert_data import Film_Ticket, insert_data_into_db
# from scripts.core.handlers.insert_data import insert_data_into_db, BookingDetails
app = FastAPI()
def on_connect(client, userdata, flags, rc):
print("Connected with result code " + str(rc))
client.subscribe("book_movies/")
def on_message(client, userdata, msg):
print(msg.topic + " " + str(msg.payload))
client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message
client.connect("192.168.0.220", 1883, 60)
app = FastAPI()
booked_seats = []
@app.post("/book_ticket")
async def book_ticket(
class_type: str,
number_of_tickets: int,
seat_numbers: list[str],
user_name: str,
user_age: int,
user_phone: int):
if class_type not in ["gold", "silver"]:
raise HTTPException(status_code=400, detail="Invalid class type")
if len(seat_numbers) != number_of_tickets:
raise HTTPException(status_code=400, detail="Number of seat numbers must match the number of tickets")
for seat_number in seat_numbers:
if seat_number in booked_seats:
raise HTTPException(status_code=400, detail=f"Seat number {seat_number} is already booked")
booked_seats.append(seat_number)
# seat_list = f",{seat_number}"
payload = f"{class_type} class ticket : booking: {number_of_tickets} tickets by {user_name} " \
f" for seat numbers {seat_numbers} having telephone number {user_phone} whose age is" \
f" {user_age}",
gold_payload = f"class_type :{class_type} ,seat_number :{seat_numbers} "
silver_payload = f"class_type :{class_type} ,seat_number :{seat_numbers} "
client.publish("book_movies/", str(payload))
client.subscribe("book_movies/#")
# print(type(user_phone), type(user_name), type(user_phone), type(user_age), type)
tickets = Film_Ticket(
mobile_no=user_phone,
preferred_class=class_type,
no_of_tickets=number_of_tickets,
seat_no=str(seat_numbers),
age=user_age
)
print(tickets.age)
# status = insert_data_into_db(tickets)
# if status:
# print("detials", tickets)
if class_type == "silver":
client.publish("silver_ticket_booking", str(silver_payload))
client.subscribe("silver_ticket_booking")
elif class_type == "gold":
client.publish("gold_ticket_booking", str(gold_payload))
client.subscribe("gold_ticket_booking")
return {"message": "Ticket booking successful"}
redis~=4.5.1
psycopg2~=2.9.5
\ No newline at end of file
psycopg2~=2.9.5
SQLAlchemy~=2.0.3
paho-mqtt~=1.6.1
fastapi~=0.91.0
uvicorn~=0.20.0
pydantic~=1.10.4
\ No newline at end of file
from sqlalchemy import create_engine
from scripts.config.databases.postgres.postgres_connection import connection
import urllib.parse
database_uri = 'postgresql+psycopg2://postgres:admin@localhost:5433/postgres'
try:
urllib.parse.quote_plus("admin")
engine = create_engine(database_uri)
print("Sql alchemy connected!")
except Exception as e:
print("Exception occurred due to >> ", e)
from datetime import date
from pydantic import BaseModel
from sqlalchemy import Column, Integer, String, Boolean, Date, ForeignKey
from sqlalchemy import create_engine
from sqlalchemy.orm import declarative_base
from sqlalchemy.orm import sessionmaker
# create engine
engine = create_engine('postgresql://postgres:admin@localhost:5432/theater_db1', echo=True)
# create session
Session = sessionmaker(bind=engine)
session = Session()
# create Base
Base = declarative_base()
# create BookingDetails class
class BookingDetails(Base):
__tablename__ = 'ticket_details1'
booking_id = Column(Integer, primary_key=True)
mobile_no = Column(Integer)
preferred_class = Column(String)
no_of_tickets = Column(Integer)
seat_numbers = Column(String(300))
date_of_purchase = Column(Date, default=date.today())
age = Column(Integer)
status = Column(Boolean, default=False)
class Ticket(Base):
__tablename__ = "ticket_details"
booking_id = Column(Integer, primary_key=True)
# __table_args__ = (UniqueConstraint("booking_id", "booking_id"))
mobile_no = Column(String, unique=True)
preferred_class = Column(String)
no_of_tickets = Column(Integer)
seat_no = Column(String)
date_of_purchase = Column(Date, default=date.today())
age = Column(Integer)
status = Column(Boolean, default=False)
# create tables
Base.metadata.create_all(engine)
class Film_Ticket(BaseModel):
mobile_no: int
pref_class: str
no_of_ticket: int
seat_no: str
age: int
def insert_data_into_db(ticket):
# add new booking details
try:
new_booking = Ticket(
mobile_no=ticket.mobile_no,
preferred_class=ticket.pref_class,
no_of_tickets=ticket.no_of_ticket,
seat_no=ticket.seat_no,
age=ticket.age)
session.add(new_booking)
session.commit()
return True
except Exception as e:
print(e)
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment