以前我使用Python Flask和SQLAlchemy ORM构建web API。目前,通信采用TCP/IP作为传输协议。尝试从TCP/IP requestHandler访问数据库时出现问题。无法执行访问一个模型的查询。到目前为止,我的代码是:
运行.py
app = create_app(app_mode)
# serverApp = ServerApp.ServerApp.getInstance()
if __name__ == '__main__':
app.run(host="127.0.0.1", port=Server.PORT, threaded=True,debug=True,use_reloader=False)
应用程序.py
client = ari.connect('http://localhost:8088', 'asterisk', 'asterisk')
bridgeApp = BridgeApp.BridgeApp.getInstance(client)
serverApp = ServerApp.ServerApp.getInstance(bridgeApp)
def create_app(env_name):
app = Flask(__name__)
app.config.from_object(app_config[env_name])
db.init_app(app)
def startBridgeApp():
try:
bridgeApp.run()
except ValueError:
pass
if not bridgeApp.isRun():
thread.start_new_thread(startBridgeApp, ())
def startServerApp():
try:
serverApp.run()
except ValueError:
pass
if not serverApp.isRun():
thread.start_new_thread(startServerApp, ())
ServerApp.py
class ServerApp:
__instance = None
__run = False
def __init__(self,bridgeApp):
ServerApp.__instance = self
self.bridgeApp = bridgeApp
self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.server_address = ("127.0.0.1",5009)
self.sock.bind(self.server_address)
self.client_address=None
self.connection=None
def run(self):
if not ServerApp.__run:
self.listen()
def stop(self):
if ServerApp.__run:
ServerApp.__run = False
def listen(self):
self.sock.listen(1)
while True:
(self.connection, self.client_address) = self.sock.accept()
self.accept()
def accept(self):
try:
while True:
data = self.connection.recv(1024).decode()
if data :
self.handleData(data)
self.connection.sendall(data.encode())
else :
print ('no more data from', self.client_address)
break
except:
self.connection.close()
def handleData(self,data):
print ( 'handleData "%s"' % data)
check = json.loads(data)
try:
caller_device = DeviceModel.get_all()
except:
print "error"
设备模型.py
# src/models/DeviceModel.py
from marshmallow import fields, Schema
import datetime
from . import db, bcrypt
from src.constant import *
class DeviceModel(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(25), unique=True, nullable=False)
ipAddress = db.Column(db.String(255), nullable=False)
# class constructor
def __init__(self, data):
self.id = data.get('id')
self.name = data.get('name')
self.ipAddress = data.get('ipAddress')
def save(self):
db.session.add(self)
db.session.commit()
def update(self, data):
for key, item in data.items():
setattr(self, key, item)
self.modifiedAt = datetime.datetime.utcnow()
db.session.commit()
def delete(self):
db.session.delete(self)
db.session.commit()
@staticmethod
def get_all():
return DeviceModel.query.all()
任何人都可以帮助,我不知道为什么不显示数据,即使服务器应用程序仍然在应用程序环境
目前没有回答
相关问题 更多 >
编程相关推荐