小编Tom*_*mmy的帖子

mysql .my.cnf没有正确阅读凭证?

我可以使用以下行连接到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 …

mysql

6
推荐指数
2
解决办法
4777
查看次数

运行 python 生成器清理代码的最佳方法

我正在尝试编写一个生成器函数,该函数从数据库中获取行并一次返回一行。但是,我不确定下面标记为 ** 的清理代码是否按照我的想法执行。如果没有,将清理代码放入生成器本身并在最后一个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)

python generator mysql-python

5
推荐指数
3
解决办法
3384
查看次数

在内存高效生成器中使用 PyMySql 的正确方法

我想编写一个生成器函数,该函数将在内存有限的系统上运行,该系统使用 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 …

python mysql mysql-python pymysql

5
推荐指数
1
解决办法
2586
查看次数

Matplotlib 在 io.bytesIo 的不同使用之间保存状态

我有一个返回 .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 buffer matplotlib

5
推荐指数
1
解决办法
4056
查看次数

我该如何生成requirements.txt?Pip Freeze不是一个好方法

我应该如何为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的实际依赖关系的超集.

pip python-3.x

5
推荐指数
2
解决办法
3185
查看次数

使用Swagger生成的新代码更新Flask代码

我最近开始使用Swagger来生成烧瓶模板:http : //editor.swagger.io/#/

我的工作流程有缺陷,我想知道哪里出了问题。一世:

  1. 使用用户界面编写API V1 .yaml
  2. 使用UI编辑器生​​成代码,该编辑器将下载存根的zip文件
  3. 编写残存的功能

这部分过程很好。但是,假设我们要添加一个新端点或更改一个现有端点。怎么办?一世:

  1. 重新加载swagger编辑器
  2. 编辑Yaml
  3. 生成代码,该代码将下载新的zip并删除旧代码
  4. 使用新生成的代码并执行“自我合并”,将新存根复制到旧代码中,然后将新yaml复制到旧代码中

似乎最初的烧瓶模板与进行中的维护之间存在差距。我究竟做错了什么?

python flask swagger

5
推荐指数
1
解决办法
1074
查看次数

Github 的 PR 比较算法:你能交换它吗?

(注意: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 上的帐户级贡献有点误导:只是移动代码的人可能会在存储库中进行大量添加和删除,从而给人留下他们是大型贡献者的印象,而实际上他们没有贡献任何功能)

github

5
推荐指数
1
解决办法
1336
查看次数

python tox:如何在环境中使用其他python envlist

这是我的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上运行。

python tox

5
推荐指数
3
解决办法
1961
查看次数

python3 asyncio:堆栈中的所有函数都必须使用await/async

使用时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)

python-3.x python-asyncio

5
推荐指数
1
解决办法
479
查看次数

戈朗; 无法将函数理解为接收器

我正在尝试通读以下内容: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的第二个参数需要一个类型Handlerhttps://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 类型appHandlerServeHTTP. 哪个调用哪个?他们对“函数如何也可以成为接收器”进行了附加评论,我认为这就是我被绊倒的地方。

在这里,fn appHandler作为接收者,我希望有类似的东西viewRecord.serveHTTP(),但这没有意义,而且viewRecord是一个函数。我认为正在发生的是Handle …

go

5
推荐指数
2
解决办法
247
查看次数