小编mak*_*asi的帖子

如何在sublime中为python库自动完成

目前,当我导入一些代码时,例如:

from datetime import datetime
Run Code Online (Sandbox Code Playgroud)

我看不出它有什么方法.我怎么知道有utcnow()例如.如果有一些sublime插件会很棒,所以我有这个功能,就像在eclipse中用cntr + space方法一样.也可能是在类定义之间有一些导航,或者去属性定义等.

首选插件

python sublimetext3

17
推荐指数
2
解决办法
3万
查看次数

如何在远程机器上连接docker mysql容器

我有两台机器.我的机器IP1(Europe),和其他公共机器IP2(USA).在IP2我有mysql容器中运行带有音量/var/lib/mysql设置在主机上的某个文件夹被复制~/mysqldatabase.3306添加了端口防火墙规则.我也有ssh连接到机器.所以我不知道从哪里开始.通常当没有码头时我只添加

bind-address = 0.0.0.0
Run Code Online (Sandbox Code Playgroud)

作为mysql中的配置,我打开防火墙端口3306(或指向mysql的另一个端口)并且事情有效.所以我可以在IP2机器上的docker之外安装mysql-server软件包(主机是ubuntu16.04)并将其设置为指向该~/mysqldatabase文件夹,但是真的有必要这样做吗?有没有办法直接连接IP1IP2:mysql_container:mysql_database

我以两种方式运行mysql docker容器.一个是docker文件.另一个是systemctl服务.

docker-compose.yml的一部分:

version: "3"
services:
  mysql:
    image: mysql:5.7
    volumes:
      - /home/username/mysqldatabase:/var/lib/mysql
    ports:
      - '3306:3306'
    environment:
        MYSQL_ROOT_PASSWORD: rootpass
        MYSQL_DATABASE: somedb
        MYSQL_USER: someuser
        MYSQL_PASSWORD: someuserpassword
Run Code Online (Sandbox Code Playgroud)

mysql.service

[Unit]
Description=Run %p
Requires=docker.service
After=docker.service

[Service]
Restart=always
ExecStartPre=-/usr/bin/docker kill %p
ExecStartPre=-/usr/bin/docker rm -f %p
docker run --rm --name mysql -v /home/username/mysqldatabase:/var/lib/mysql -p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=rootpass -e MYSQL_DATABASE=somedb -e MYSQL_USER=someuser -e …
Run Code Online (Sandbox Code Playgroud)

mysql ports remote-access docker

13
推荐指数
2
解决办法
7324
查看次数

获取角度Observable流作为数组

我有列表,应该模拟流:

list = [
  {name : 'Str1', age: 10},
  {name : 'Str2', age: 10},
  {name : 'Str3', age: 10}
];
Run Code Online (Sandbox Code Playgroud)

Observable从这个列表中创建了一个:

Observable.from(this.list).skip(this.currentPage * this.pageSize).take(this.pageSize).subscribe(data => this.pagerList = data, console.error);
Run Code Online (Sandbox Code Playgroud)

在订阅方法中,我逐个获取值.我应该如何等待返回整个数据然后获取整个列表.有take()运算符,之后Observable必须停止.

我不想在数组中逐个放置每个值.

我是新来的,不仅是角度,还有javascript.

observable rxjs angular

10
推荐指数
1
解决办法
4620
查看次数

如何通过Firebase数据库列表中的多个键进行查询

我在Firebase中有此列表

"games":{
          "-Kaaaaaaaaaaaaaaaas" : {
            "name" : "name_a"
          },
          "-Kbbbbbbbbbbbbbbbbs" : {
            "name" : "name_b"
          },
          "-Kccccccccccccccccs" : {
            "name" : "name_c"
          },
          "-Kdddddddddddddddds" : {
            "name" : "name_d"
          },
        }
Run Code Online (Sandbox Code Playgroud)

我只想查询其中两个游戏.我有他们的钥匙:

"-Kaaaaaaaaaaaaaaaas"
"-Kbbbbbbbbbbbbbbbbs"
Run Code Online (Sandbox Code Playgroud)

我想这样做:

WHERE key="-Kaaaaaaaaaaaaaaaas" OR key="-Kbbbbbbbbbbbbbbbbs"
...
WHERE key IN ("-Kaaaaaaaaaaaaaaaas" , "-Kbbbbbbbbbbbbbbbbs")
Run Code Online (Sandbox Code Playgroud)

或使用Firebase代码:

var gamesRef = ref.child("games");
var query = gamesRef.orderByKey().equalTo("-Kaaaaaaaaaaaaaaaas" , "-Kbbbbbbbbbbbbbbbbs", ...);
var list = $firebaseArray(query);
Run Code Online (Sandbox Code Playgroud)

这是不可能的,因为equalTo只能接受:

equalTo(String value, String key)
equalTo(double value)
equalTo(double value, String key)
equalTo(String value)
equalTo(boolean value, String key)
equalTo(boolean …
Run Code Online (Sandbox Code Playgroud)

javascript firebase firebase-realtime-database

7
推荐指数
0
解决办法
5274
查看次数

如何设置 agm-marker 标签的样式

如何设置样式 agm-marker-label - max-width 以将文本设置为居中?我可以更改标签位置,但不能为集中标签名称设置最小宽度。

<agm-marker *ngIf="school.lat && school.lng" 
                    [iconUrl]="{url: school.mapMarker, scaledSize: {height: 75,width: 48},labelOrigin:{x:70,y:20}}"
                    [label]="{text:school.schoolName}"
                    [longitude]="school.lng | parseFloat"
                    [latitude]="school.lat | parseFloat">
        </agm-marker>
Run Code Online (Sandbox Code Playgroud)

angular-google-maps angular5

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

SQLAlchemy从两个表中选择null LEFT JOIN返回空结果

我有两个sql表.表1(id,name)和表2(id,name,table1_id)

 sql = text('SELECT t1.*, t2.* FROM table1 t1 '
               'LEFT JOIN table2 t2 ON t1.id=t2.table1_id ')
query = db.session.query(Table1, Table2).from_statement(sql).params()
table1_table2_tuple_list = query.all()
Run Code Online (Sandbox Code Playgroud)

如果sql查询的结果是

67, 'some name', 1, 'some name in table 2', 67
Run Code Online (Sandbox Code Playgroud)

然后一切都很好,我有[(<Table1>, <Table2>)] table1_table2_tuple_list

但是如果sql查询的结果是:(也是所有其他代码都是针对此结果)

67, 'some name', Null, Null, Null
Run Code Online (Sandbox Code Playgroud)

然后而不是接收[(<Table1>, None)] 我收到[(None, None)]

如果我稍微改变我的代码:

sql = text('SELECT t1.*, t2.id, t2.name,t1.id FROM table1 t1 '
               'LEFT JOIN table2 t2 ON t1.id=t2.table1_id ')
query = db.session.query(Table1, Table2, Table1.id).from_statement(sql).params()
table1_table2_tuple_list = query.all()
Run Code Online (Sandbox Code Playgroud)

然后我收到:

[<Table1>, …
Run Code Online (Sandbox Code Playgroud)

python sqlalchemy flask-sqlalchemy

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

werkzeug.security.check_password_hash 花费的时间太长

check_password_hash花费的时间比预期要长得多。使用 Werkzeug 0.12 和 0.9 进行测试。下面的测试显示检查密码大约需要 2 秒。为什么需要这么长时间?

该项目使用GAE - 谷歌应用程序引擎。并且部署在GAE上。不确定 GAE 是否有 werkzeug 库可以覆盖我已安装的库。我使用GAE SDK版本1.9.50

def verify_password(self, password):
    logging.info(self.password_hash)
    logging.info(str(datetime.now()))
    result = check_password_hash(self.password_hash, password)
    logging.info(str(datetime.now()))
    return result
Run Code Online (Sandbox Code Playgroud)
hash:pbkdf2:sha256:......................................
2017-07-28 13:52:14.904270
2017-07-28 13:52:17.041060
Run Code Online (Sandbox Code Playgroud)

================= 编辑 1 ============ 好的,看来我还没有完全清除我的库文件夹。我尝试了多次,从 Werkzeug==0.9.6 升级到 Werkzeug==0.12 解决了问题。降级到 0.9.6 问题又回来了。

这仅解决了我机器上的问题。在 GAE 服务器上,延迟仍然存在。================= 编辑 2 ============ 创建非常简约的项目后,我再次测试,在 GAE 上的行为是相同的。然后我看到在我的数据库中有两种类型的密码:一种是 sha1,另一种是 sha256。那些 sha1 的人也在 GAE 上快速工作。

python werkzeug flask

4
推荐指数
1
解决办法
1566
查看次数

如何将AppEnginePlatformWarning记录为警告而不是错误

我的项目使用以下python库:

requests==2.18.4
requests-toolbelt==0.8.0
Run Code Online (Sandbox Code Playgroud)

并在main.py上调用它

requests_toolbelt.adapters.appengine.monkeypatch()
Run Code Online (Sandbox Code Playgroud)

使用请求库时,App引擎正在记录Google云端日志中的错误消息:

AppEnginePlatformWarning:urllib3在Google App Engine沙箱而不是套接字上使用URLFetch。要直接使用套接字而不是URLFetch,请参阅 https://urllib3.readthedocs.io/en/latest/reference/urllib3.contrib.html

AppEnginePlatformWarning:URLFetch不支持精细的超时设置,恢复为总URLFetch超时或默认URLFetch超时。

但这实际上只是警告,我的代码可以按预期工作。但是此日志对我来说是有问题的,因为当我查看统计信息时,我不知道日志中是否确实存在错误。这就是为什么我必须以某种方式将其记录为警告。

这是一个stackoverflow答案。该答案指出,如果在GAE标准环境中显示此警告,则代码将正常工作。所以对我来说真的是警告。如何这样登录? AppEnginePlatformWarning:urllib3在Google App Engine沙箱而不是套接字上使用URLFetch

python google-app-engine python-requests

4
推荐指数
1
解决办法
174
查看次数

python 分配给 Flask-SQLAlchemy 中的 AppenderBaseQuery 属性无效

我有查询从数据库中选择用户列表。每个用户对象都有标签列表。这是使用以下关系在 Tag 模型中设置的:

users = db.relationship('User', secondary=user_tag, backref=db.backref('tags', lazy='dynamic'), lazy='dynamic')
Run Code Online (Sandbox Code Playgroud)

当返回查询结果时,我有用户对象:

id {int}1

标签 {AppenderBaseQuery}(选择...)

一切都很好,但我想为 tags 属性分配新列表

user.tags=list()
Run Code Online (Sandbox Code Playgroud)

但是这一行对对象没有任何影响,用户仍然包含 AppenderBaseQuery。这个属性如何变得不可变。我不明白。仍然是 python 新手,如果问题很愚蠢,抱歉。

编辑:

我不会改变数据库。我试图从会话中分离用户对象但没有成功。我已经有了标签列表,只想将其设置为用户对象标签列表。在我将它序列化为 json 并返回带有用户列表的响应之后。通常我使用 url_for 为标签 url 创建,但这次我想与用户一起返回标签列表以使事情更快

python sqlalchemy python-2.7 flask-sqlalchemy

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

如何使用 HttpClient 在 Angular 4.3 上使用对象为 HTTP 请求创建 HttpParams

我有完全 angular 版本 4.3.2,由于依赖关系我无法更新。所以现在我坚持这个版本。我有一个带有动态参数的对象(里面可以有其他键和值):

let query = {
    param1: 1,
    param2: 'a'
}
Run Code Online (Sandbox Code Playgroud)

我想做类似的事情:

params = new HttpParams();
params = params.append(query);
return this.httpClient.get(this.config.apiUrl + '/items', {
            params: params,
            headers: headers
        });
Run Code Online (Sandbox Code Playgroud)

但没有这样的 params.append(query) 方法。所以我需要遍历查询键并将它们一一添加到参数中。有没有更简单的解决方案?

编辑1:

根据这个答案,这可以从 angular 5.0.0-beta.6 (2017-09-03) 开始完成,但对我来说不是解决方案。 /sf/answers/3242253031/

angular angular-httpclient

1
推荐指数
2
解决办法
5693
查看次数