gpt4 book ai didi

python - 动态地向类提供变量

转载 作者:太空狗 更新时间:2023-10-29 21:08:33 25 4
gpt4 key购买 nike

我试过这里官方教程提供的例子:

http://saratoga.readthedocs.org/en/latest/serviceclasses.html

我对代码做了一些修改,现在看起来是这样的:

http://23.21.167.60:8094/v1/yearlength?name=earth

我的问题是我需要在 URL 中提供 account=211829,就像 name=earth 一样。

我在下面写的是有效的,因为我已经向类(class)提供了帐号。我如何动态执行此操作?

import json
from saratoga.api import SaratogaAPI, DefaultServiceClass

class PlanetServiceClass(DefaultServiceClass):
def __init__(self, myaccount):
self.yearLength = {
"earth": self.myquery(myaccount),
"pluto": {"seconds": 7816176000}
}

def myquery(self, myaccount):
import pandas as pd

query = ('select * from mydata198 where account = %s ') % (myaccount)

import sqlalchemy
engine = sqlalchemy.create_engine('mysql+pymysql://dba:pass@1.2.3.4/test')
conn = engine.raw_connection()

df=pd.read_sql(query, conn)
return df.to_json()

class PlanetAPI(object):
class v1(object):
def yearlength_GET(self, request, params):
planetName = params["params"]["name"].lower()
return self.yearLength.get(planetName)

APIDescription = json.load(open("planets.json"))
myAPI = SaratogaAPI(PlanetAPI, APIDescription, serviceClass=PlanetServiceClass('211829'))
myAPI.run(port=8094)

如何将 account_num 变量从 PlanetAPI 类传递到 PlanetServiceClass

最佳答案

您需要将您的网址更改为

http://23.21.167.60:8094/v1/yearlength?name=earth&account_num=12345

然后在代码中你可以通过

访问它
account_num = params["params"]["account_num"]

编辑:

问题是您当前正在使用 account_num 在服务器运行之前对其进行初始化。所以需要在运行后传入。

class PlanetAPI(object):
class v1(object):
def yearlength_GET(self, request, params):
planetName = params["params"]["name"].lower()
account_num = params["params"]["account_num"]

mysql_result_json = self.myquery(account_num)
self.yearLength['earth'] = mysql_result_json # assign to earth if you want, as in your question
return self.yearLength.get(planetName)

然后将其余代码改回教程中的代码:

myAPI = SaratogaAPI(PlanetAPI, APIDescription, serviceClass=PlanetServiceClass())

class PlanetServiceClass(DefaultServiceClass):
def __init__(self):

关于python - 动态地向类提供变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30317347/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com