我可以使用以下行连接到mysql:
mysql -u myusername -p
(enters password into terminal)
>>>Welcome to the MySQL monitor. Commands end with ; or \g.
>>>Your MySQL connection id is 51
>>>Server version: 5.6.10-log Source distribution
Run Code Online (Sandbox Code Playgroud)
这是我的主页目录中的.my.cnf(不是/etc/my.cnf):
[client]
user = myusername
password = mypassword
host = localhost
Run Code Online (Sandbox Code Playgroud)
我的/etc/my.cnf中似乎还有一个客户端部分:
# The following options will be passed to all MySQL clients
[client]
#password = your_password
port = 3306
socket = /tmp/mysql.sock
Run Code Online (Sandbox Code Playgroud)
但是,当我在终端输入"mysql"时,我得到:
ERROR 1045 (28000): Access denied for user 'myusername'@'localhost' (using password: YES)
Run Code Online (Sandbox Code Playgroud)
my.cnf有什么问题?
此外,它与anon用户无关,如下所述:MySQL ERROR …
我正在尝试编写一个生成器函数,该函数从数据库中获取行并一次返回一行。但是,我不确定下面标记为 ** 的清理代码是否按照我的想法执行。如果没有,将清理代码放入生成器本身并在最后一个yield语句之后执行的最佳方法是什么?我查看了捕获 StopIteration 但这似乎是由调用者完成的,而不是在生成器内完成的。
def MYSQLSelectGenerator(stmt):
...
try:
myDB = MySQLdb.connect(host=..., port=..., user=..., passwd=..., db=...)
dbc=myDB.cursor()
dbc.execute(stmt)
d = "asdf"
while d is not None:
d = dbc.fetchone() #can also use fetchmany() to be more efficient
yield d
dbc.close() #** DOES THIS WORK AS I INTEND, MEANING AS SOON AS d = "None"
except MySQLdb.Error, msg:
print("MYSQL ERROR!")
print msg
Run Code Online (Sandbox Code Playgroud) 我想编写一个生成器函数,该函数将在内存有限的系统上运行,该系统使用 PyMySql(或 MySQLDb)一次返回一个选择查询的结果。以下作品:
#execute a select query and return results as a generator
def SQLSelectGenerator(self,stmt):
#error handling code removed
cur.execute(stmt)
row = ""
while row is not None:
row = self.cur.fetchone()
yield row
Run Code Online (Sandbox Code Playgroud)
然而,以下内容似乎也有效,但它是否正在执行 fetchall() 是神秘的。我在 Python DB API 中找不到当您将游标对象作为列表进行迭代时到底会发生什么:
#execute a select query and return results as a generator
def SQLSelectGenerator(self,stmt):
#error handling code removed
cur.execute(stmt)
for row in self.cur:
yield row
Run Code Online (Sandbox Code Playgroud)
在这两种情况下,以下内容都会成功打印所有行
stmt = "select * from ..."
for l in SQLSelectGenerator(stmt):
print(l)
Run Code Online (Sandbox Code Playgroud)
所以我想知道第二种实现是更好还是更差,以及它是调用 fetchall 还是用 fetchone 做一些棘手的事情。Fetchall …
我有一个返回 .png 原始内容的函数:
import matplotlib.pyplot as plt
def plotVoltage(dbc,imei,sMonth,sDay,sYear):
...
plt.figure(1)
ax = plt.subplot(111)
ax.plot(Xs,Ys,color='blue',linewidth=2)
buf = None #DOES NOT SOLVE PROBLEM
buf = io.BytesIO()
plt.savefig(buf, format = 'png')
buf.seek(0)
return buf.read()
Run Code Online (Sandbox Code Playgroud)
还有一个 Flask 函数,它将图像作为 HTTP 响应返回:
@app.route('/voltageOverTime', methods=['GET'])
def vot():
ret = plotVoltage(some_parameters))
resp = Response(response=ret,
status=200,
mimetype="image/png")
return resp
Run Code Online (Sandbox Code Playgroud)
最后,我有一个 .html 文件,/voltageOverTime当单击按钮时,图像源被设置为带有一些参数。问题是,如果我使用不同的参数多次单击按钮,图像会彼此“堆叠”;我看到每条线都绘制在另一条线之上。我认为这与内存缓冲区有关,例如,每次我单击按钮时,它都会添加到该缓冲区中。我怎样才能使这个缓冲区完全刷新?
我应该如何为Python项目生成requirements.txt?
这是我与pip冻结的问题.假设我的包P需要A,B,C.假设C是一个导入X,Y,Z的库,但是P需要只有X.那么如果我:
1) Install A
2) Install B
3) Install C, which installs X, Y, Z
4) Do a pip freeze into P's requirements.txt
Run Code Online (Sandbox Code Playgroud)
然后P的requirements.txt看起来像:
1) A
2) B
3) C
4) X
5) Y
6) Z
Run Code Online (Sandbox Code Playgroud)
但是在我的Python安装中实际上并不需要Y和Z来运行P.
据我所知,运行pip freeze生成P的需求将显示依赖关系的所有依赖关系,因此是P的实际依赖关系的超集.
我最近开始使用Swagger来生成烧瓶模板:http : //editor.swagger.io/#/
我的工作流程有缺陷,我想知道哪里出了问题。一世:
这部分过程很好。但是,假设我们要添加一个新端点或更改一个现有端点。怎么办?一世:
似乎最初的烧瓶模板与进行中的维护之间存在差距。我究竟做错了什么?
(注意:Github 使用情况出现在 Stack Overflow 上询问的 GitHub 问题范围内 )
即使在同一函数内移动代码的 PR 在 Github 上显得非常繁重,即使它们不做任何其他事情。我创建了一个非常基本的 PR 来演示这一点:https://github.com/tommyjcarpenter/github_test/pull/1/commits/2afb07ec5c6b56724bd10c6b56386299493bbb43。存储库所做的只是定义两个函数,然后 PR 进行更改以将第一个函数移至第二个函数下方。github 上的差异显示删除了 20 行,添加了 21 行。人们会假设差异可以显示为一个微不足道的“代码移动”。
现在想象一下,它有更多的功能和更多的琐碎代码移动。
看来 git 本身能够检测到此类更改:Using Git diff to detector code moving + How to use diff options
那么,有没有一种方法可以替换 diffing 算法,让这样的 PR 看起来不那么繁重呢?github 使用它自己的内部算法还是使用您的默认比较算法?
(编辑:这似乎也使 Github 上的帐户级贡献有点误导:只是移动代码的人可能会在存储库中进行大量添加和删除,从而给人留下他们是大型贡献者的印象,而实际上他们没有贡献任何功能)
这是我的tox.ini:
[tox]
envlist = py27,py35
[testenv]
deps =
Flask
connexion
pytest
coverage
pytest-cov
requests
six
commands=pytest --junitxml xunit-reports/xunit-result-XXX.xml --cov {envsitepackagesdir} --cov-report=xml
[testenv:local]
#HOW DO I SPECIFY A NEW LIST OF PYENV LIKE 31,36 IN HERE????
commands=
pytest --cov {envsitepackagesdir}/XXX --cov-report html
Run Code Online (Sandbox Code Playgroud)
当我运行时,tox它在py27和中运行py35。我想tox -e local在一组不同的多个python环境中运行。我不知道该怎么做。我该怎么做呢?现在,它甚至不尊重初始环境列表,仅在Python 2.7上运行。
使用时await/async,它是否必须“一路向上”,这意味着调用链中的每个函数都必须使用它吗?
例如:
def a():
# can't call b() here
async def b():
return await c
async def c():
return ...
Run Code Online (Sandbox Code Playgroud)
我最近在 gevent 下运行的 Flask 应用程序的上下文中想知道这一点,其中一个端点是一个长时间运行的调用,应该“检查”,同时不阻止其他调用
def handler0():
# short running
return ...
def handler(): # blocks handler0
return await some_long_thing()
async def some_long_thinig():
# ..do somethiing
return ...
Run Code Online (Sandbox Code Playgroud) 我正在尝试通读以下内容:https : //blog.golang.org/error-handling-and-go特别是标题为Simplifying repetitive error handling.
他们这样称呼http.Handle:
func init() {
http.Handle("/view", appHandler(viewRecord))
}
Run Code Online (Sandbox Code Playgroud)
http.Handle的第二个参数需要一个类型Handler(https://golang.org/pkg/net/http/#Handler),它需要一个方法serveHttp。
serveHttp这里的功能:
func (fn appHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
if err := fn(w, r); err != nil {
http.Error(w, err.Error(), 500)
}
}
Run Code Online (Sandbox Code Playgroud)
所以,他们的类型appHandler现在实现了 Handler 接口,因为它实现了ServeHTTP,我明白了。所以它可以在Handle函数中使用而viewRecord不能。
我感到困惑的地方是viewRecordwhich 类型appHandler和ServeHTTP. 哪个调用哪个?他们对“函数如何也可以成为接收器”进行了附加评论,我认为这就是我被绊倒的地方。
在这里,fn appHandler作为接收者,我希望有类似的东西viewRecord.serveHTTP(),但这没有意义,而且viewRecord是一个函数。我认为正在发生的是Handle …
python ×5
mysql ×2
mysql-python ×2
python-3.x ×2
buffer ×1
flask ×1
generator ×1
github ×1
go ×1
matplotlib ×1
pip ×1
pymysql ×1
swagger ×1
tox ×1