python - 在数据库中进行一些更改时,Flask Server 需要重新启动吗?
问题描述
我正在使用 Flask 创建 Web 服务。当我对 DB 进行一些更改时,我需要重新启动 Flask 服务器。
db = pymysql.connect("localhost","root","","posdata")
db1 = pymysql.connect("localhost","root","","posdata")
另外我必须创建两个数据库连接才能使某些功能正常工作。如果我只使用一个连接(如上所说的数据库),我会得到
`InterfaceError (0, '')`
所以为了处理 InterfaceError 我创建了两个 db 连接。但现在的问题是,当我对 DB 进行一些更改时,db 工作正常但 db1 不工作,我需要重新启动烧瓶服务器以使 db1 连接工作。
@app.route('/data_url/<customer_name>')
def data(customer_name):
cursor = db.cursor()
cursor.execute(" select country_name from countries as c, customers as cu where c.c_id = cu.c_id and cu.customer_id = '%s' " % customer_name)
data = cursor.fetchall()
data = [x[0] for x in data]
return jsonify(data)
**# query to select TYPE attribute from DB and send it to ajax**
@app.route('/url_for/<customer_name>')
def dt(customer_name):
cursor = db1.cursor()
cursor.execute(" select type from customers where customer_id = '%s' " % customer_name)
data = cursor.fetchall()
data = [x[0] for x in data]
return jsonify(data)
在这里要使@app.route('/url_for/')工作我需要重新启动烧瓶服务器。
使用单个 DB 连接时出现错误回溯
Traceback (most recent call last):
File "C:\Users\AppData\Local\Programs\Python\Python36\lib\site-packages\flask\app.py", line 2309, in __call__
return self.wsgi_app(environ, start_response)
File "C:\Users\AppData\Local\Programs\Python\Python36\lib\site-packages\flask\app.py", line 2295, in wsgi_app
response = self.handle_exception(e)
File "C:\Users\AppData\Local\Programs\Python\Python36\lib\site-packages\flask\app.py", line 1741, in handle_exception
reraise(exc_type, exc_value, tb)
File "C:\Users\AppData\Local\Programs\Python\Python36\lib\site-packages\flask\_compat.py", line 35, in reraise
raise value
File "C:\Users\AppData\Local\Programs\Python\Python36\lib\site-packages\flask\app.py", line 2292, in wsgi_app
response = self.full_dispatch_request()
File "C:\Users\AppData\Local\Programs\Python\Python36\lib\site-packages\flask\app.py", line 1815, in full_dispatch_request
rv = self.handle_user_exception(e)
File "C:\Users\AppData\Local\Programs\Python\Python36\lib\site-packages\flask\app.py", line 1718, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "C:\Users\AppData\Local\Programs\Python\Python36\lib\site-packages\flask\_compat.py", line 35, in reraise
raise value
File "C:\Users\AppData\Local\Programs\Python\Python36\lib\site-packages\flask\app.py", line 1813, in full_dispatch_request
rv = self.dispatch_request()
File "C:\Users\AppData\Local\Programs\Python\Python36\lib\site-packages\flask\app.py", line 1799, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "C:\Users\OneDrive -\Desktop\Project\TestApp\app.py", line 34, in Request
cursor.execute('select customer_id from customers')
File "C:\Users\AppData\Local\Programs\Python\Python36\lib\site-packages\pymysql\cursors.py", line 170, in execute
result = self._query(query)
File "C:\Users\AppData\Local\Programs\Python\Python36\lib\site-packages\pymysql\cursors.py", line 328, in _query
conn.query(q)
File "C:\Users\AppData\Local\Programs\Python\Python36\lib\site-packages\pymysql\connections.py", line 516, in query
self._execute_command(COMMAND.COM_QUERY, sql)
File "C:\Users\AppData\Local\Programs\Python\Python36\lib\site-packages\pymysql\connections.py", line 750, in _execute_command
raise err.InterfaceError("(0, '')")
pymysql.err.InterfaceError: (0, '')
解决方案
您已经更改了以前的代码,但它并没有反映到您当前正在运行的Flask Server。所以答案是yes
,为了反映您对服务器的新修改,您需要重新启动 Flask Server
推荐阅读
- apache-camel - apache camel ftp:如何防止ftp组件在写入文件时处理文件
- c# - 在 C# 中捕获数组的用户输入
- android - Litho 是否支持数据绑定?
- list - 通过将对象与 [1..n] 相乘来创建列表
- amazon-web-services - 如何在基于休息的 API 函数中限制操作时间?
- python - Python数据表到相关矩阵
- javascript - 从文件中打印换行符的数量(node.js)
- r - .Rdata 与 .rds 的性能和文件大小
- selenium - 如何在控制台上显示特定的列值?
- c# - 如何根据嵌套对象的字段之一将嵌套的 json 对象反序列化为原始类型