我目前有两种方法可以同时调用(通过Java中的HTTP)
出于某种原因,有一个实例,其中getAcc()返回相同的帐户信息两次?我不太明白为什么会这样.
我认为在调用toggleUse()之前第二次调用get_account是可能的(因此IN_USE变量尚未设置为1).有谁知道如何解决这一问题?我在网上做了一些阅读,我相信这个术语是序列化.我已经看到这主要是关于数据库,但几乎没有看到如何"锁定"该方法的参考.我可以创建一个锁并做"带锁:"但我听说这不是要走的路.
@app.route('/getAcc')
def get_account():
try:
cursor.execute("SELECT USER,PASS FROM ACCOUNTS WHERE TUT_DONE = 0 AND IN_USE = 0 LIMIT 1;")
return jsonify(data=cursor.fetchall())
except (AttributeError, MySQLdb.OperationalError):
open_db()
return get_account()
@app.route('/toggleUse', methods=['POST'])
def toggle_use():
try:
username = request.values['username']
update_stmt = (
"UPDATE ACCOUNTS SET IN_USE = !IN_USE WHERE USER = (%s)"
)
data = (username,)
cursor.execute(update_stmt,data)
db.commit()
return 'Account ' + str(username) + ' IN_USE toggled'
except (AttributeError, MySQLdb.OperationalError):
open_db()
return toggle_use()
Run Code Online (Sandbox Code Playgroud)
我必须测试它,但怀疑你有问题,除了打开数据库连接并调用自身。
您是否尝试过创建一个连接来为您提供一个可以调用的池?
connection = pyodbc.connect(connection_string, autocommit=True) #I think you can set autocommit here.
@app.route('/getAcc')
def get_account():
try:
cursor = connection.cursor()
cursor.execute("SELECT USER,PASS FROM ACCOUNTS WHERE TUT_DONE = 0 AND IN_USE = 0 LIMIT 1;")
return jsonify(data=cursor.fetchall())
except (AttributeError, MySQLdb.OperationalError):
# Return a meaningful message
Run Code Online (Sandbox Code Playgroud)
其他功能也是如此。
| 归档时间: |
|
| 查看次数: |
419 次 |
| 最近记录: |