У меня есть приложение, с помощью которого я могу записывать данные в свою базу данных, но не могу читать данные из базы данных. Я хотел бы иметь возможность отправлять данные из базы данных в свое приложение, когда я захочу, что, как мне кажется, выполняется методами HTTP get и post в flask. Следует ли это делать с помощью того же сценария или отдельных сценариев? Если скрипты отдельные, как мне go писать их? Если нет, я не уверен, что добавить в мои файлы swift и python.
Код, с которым я работаю, использует flask и mysql -connector для подключения к базе данных, любая помощь, изменяющая чтение данных из базы данных, будет принята с благодарностью:
app.py
from flask import Flask
from flask import make_response
from flask import request
import mysql.connector
#opens database connectionto "events" database
try:
mydb = mysql.connector.connect(host="localhost", user="root", passwd="Proteus^5", database = "events")
print("Connection OK")
except e:
print("Connection failed: ", e)
#prepare a cursor object using cursor() method
mycursor = mydb.cursor()
app = Flask(__name__)
@app.route('/', methods=['GET', 'POST'])
def register():
event_id = request.form['a']
poi = request.form['b']
address = request.form['c']
start_time = request.form['d']
end_time = request.form['e']
sql = "INSERT INTO events (event_id, poi, address, start_time, end_time) VALUES (%s, %s, %s, %s, %s)"
val = (event_id, poi, address, start_time, end_time)
try:
# Execute the SQL command
mycursor.execute(sql, val)
# Commit your changes in the database
mydb.commit()
mydb.close()
except e:
# Rollback in case there is any error
print("Error: ", e)
mydb.rollback()
return make_response("Success!", 200)
print("DB is closed")
быстрый файл, который отправляет данные в базу данных при нажатии кнопки:
import Foundation
import SwiftUI
struct CreateEventButton: View {
@State private var isPresentedEvent = false
@State private var eventid: Int = 3
@State private var eventName: String = ""
@State private var eventDescription: String = ""
@State private var selectedStartTime = Date()
@State private var selectedEndTime = Date()
@Binding var annotationSelected: Bool
func send(_ sender: Any) {
let request = NSMutableURLRequest(url: NSURL(string: "http://localhost:5000/")! as
URL)
request.httpMethod = "POST"
let postString = "a=\(self.eventid)&b=\(self.eventName)&c=\.
(self.eventDescription)&d=\.
(self.selectedStartTime)&e=\(self.selectedEndTime)"
request.httpBody = postString.data(using: String.Encoding.utf8)
let task = URLSession.shared.dataTask(with: request as URLRequest) {
data, response, error in
if error != nil {
print("error=\(String(describing: error))")
return
}
print("response = \(String(describing: response))")
let responseString = NSString(data: data!, encoding:
String.Encoding.utf8.rawValue)
print("responseString = \(String(describing: responseString))")
}
task.resume()
self.eventName = ""
self.eventDescription = ""
self.selectedStartTime = Date()
self.selectedEndTime = Date()
}
var body: some View {
Button(action: {
self.isPresentedEvent.toggle() //trigger modal presentation
}, label: {
Text("Create Event").font(.system(size: 18))
}).padding(EdgeInsets(top: 8, leading: 6, bottom: 8, trailing: 6
.sheet(isPresented: $isPresentedEvent, content:{
VStack{
TextField("Event Name", text: self.$eventName).padding()
TextField("Event Description", text: self.$eventDescription).padding()
Form {
DatePicker("When your event starts: ", selection:
self.$selectedStartTime,
in: Date()...)
}
Form {
DatePicker("When your event ends: ", selection: self.$selectedEndTime,
in:
Date()...)
}
HStack{
Button(action: {
self.isPresentedEvent.toggle()
self.annotationSelected = false
self.eventid += 1
print("Start: \(self.selectedStartTime)")
print("End: \(self.selectedEndTime)")
self.send((Any).self)
}, label: {
Text("Create Event")
})
Button(action: {
self.isPresentedEvent.toggle()
}, label: {
Text("Cancel")
})
}
Text("Create Event Button (Non Functional)").padding()
}
} )
}
}