小编Sco*_*les的帖子

在使用pytest-django进行测试期间,Django连接对象没有看到第二个数据库的表

结论:在使用pytest-django测试期间,我的Django连接对象没有看到第二个数据库的表关系.

概述: 我有一个问题,我的Django连接对象似乎得到错误的数据库信息.我偶然发现了这个问题,当我在"客户" DB查询在桌子上,Django的告诉我的关系不存在.使用settings.py数据库部分设置如下:

DATABASES = {
    'default': {
        'NAME': 'user_data',
        'ENGINE': 'django.db.backends.postgres',
        'USER': 'postgres_1',
        'PASSWORD': 'superS3cret'
    },
    'customers': {
        'NAME': 'customer_data',
        'ENGINE': 'django.db.backends.postgres',
        'USER': 'postgres_1',
        'PASSWORD': 'superS3cret'
    }
}
Run Code Online (Sandbox Code Playgroud)

当我在目录上运行'pytest'时,下面的两个游标都从'default'数据库中获取信息:

sql = """SELECT table_name FROM information_schema.tables WHERE table_nameschema='public'"""

default = connections["default"].cursor()
default.execute(sql)
raw_data = default.fetchall()
sql_columns = [col[0] for col in default.description]
df1 = pd.DataFrame(raw_data, columns=sql_columns)

customers = connections["customers"].cursor()
customers.execute(sql)
raw_data = customers.fetchall()
sql_columns = [col[0] for col in customers.description]
df2 = pd.DataFrame(raw_data, columns=sql_columns)
Run Code Online (Sandbox Code Playgroud)

df1和df2的结果完全相同:只有'default'数据库中的表名.

使用pytest-django并使用第二个Postgres数据库会发生这种情况,但有时只会发生. …

django pytest pytest-django

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

会话关闭时使用Spring WebSocketConnectionManager的正确方法是什么

我使用Spring的WebSocketConnectionManager来处理WebSocket。有时连接关闭,我必须重新连接。但是我没有找到合适的解决方案。我可以使用WebSocketConnectionManager进行还原(重新连接)会话吗?在我看到资源中,该连接通过以下代码建立:

@Override
protected void openConnection() {
    if (logger.isInfoEnabled()) {
        logger.info("Connecting to WebSocket at " + getUri());
    }

    ListenableFuture<WebSocketSession> future =
            this.client.doHandshake(this.webSocketHandler, this.headers, getUri());

    future.addCallback(new ListenableFutureCallback<WebSocketSession>() {
        @Override
        public void onSuccess(@Nullable WebSocketSession result) {
            webSocketSession = result;
            logger.info("Successfully connected");
        }
        @Override
        public void onFailure(Throwable ex) {
            logger.error("Failed to connect", ex);
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

当我的Spring Boot应用程序启动时,我正在使用此管理器:

WebSocketConnectionManager connectionManager = new WebSocketConnectionManager(
    new StandardWebSocketClient(), webSocketHandler, "wss://localhost:8080/ws/");

connectionManager.start();
Run Code Online (Sandbox Code Playgroud)

但是当连接关闭时我该怎么办?我试图从openConnection()复制一段代码,并将其用于直接在webSocketHandler中更新会话,并且它可以工作。但是,这似乎是肮脏的解决方法。

有人知道如何正确执行吗?谢谢。

spring websocket spring-boot spring-websocket

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

在 Django &gt;= 1.10 中使用 GZip 中间件是否安全?

我希望在 Django 中启用文本压缩。的性能的文档引用的GZip中间件作为文本压缩当前的解决方案。但是,它带有一个严厉的警告:

GZip中间件

压缩所有现代浏览器的响应,节省带宽和传输时间。请注意,GZipMiddleware 目前被认为是一种安全风险,并且容易受到使 TLS/SSL 提供的保护无效的攻击。有关更多信息,请参阅 GZipMiddleware 中的警告。

几个问题:

  • 是否有任何文本压缩的替代品,我可以使用Django的是没有受到安全隐患?
  • 如果我在使用时使用 CSRF 令牌POST并且启用了 CSRF 中间件,我是否安全?

再次,通过文档

Django 1.10 中的更改:在旧版本中,Django 的 CSRF 保护机制在使用压缩时容易受到 BREACH 攻击。情况不再如此,但您仍应注意不要以这种方式泄露您自己的秘密。

security django django-middleware

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

如何使用 Pandas 数据框更新 Postgres 表列?

我正在通过 Django(新的迁移)向具有 100 多列的 Postgres 表添加一列。如何使用pandasdata_frame 中的数据更新 PostgreSQL 表中的列?Postgres SQL UPDATE伪代码是:

UPDATE wide_table wt
SET wt.z = df.z
WHERE date = 'todays_date'
Run Code Online (Sandbox Code Playgroud)

这样做的原因是我正在data_frame使用S3(这是df.z)中的 CSV计算列。Postgres 更新的文档使用起来很简单,但我不确定如何通过 Django、sqlalchemy、pyodbc 或类似工具执行此操作。

如果这有点令人费解,我深表歉意。一个小而不完整的例子是:

宽表(更新前列z

identifier    |      x       |      y      |      z       |      date       
foo           |      2       |      1      |     0.0      |      ...           
bar           |      2       |      8      |     0.0      |      ...      
baz           |      3       |      7      |     0.0      |      ... …
Run Code Online (Sandbox Code Playgroud)

python postgresql dataframe pandas

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

是什么导致完整GC运行?

我有一个在 tomcat 上运行的 Web 应用程序,其最大堆大小设置为 8GB。

如果没有用户登录应用程序,则不可清理的内存(垃圾回收后驻留的内存)会非常低,约为 1GB。在这种情况下,我看到内存持续增长约 4GB,然后垃圾收集器运行,内存再次下降到约 1GB。如果没有用户登录,此模式将继续。

GC 日志显示 Full GC 需要 11 秒,与需要约 1 秒的 Minor GC 相比,这是相当长的时间:

2017-02-14T15:30:44.553+0530: 591.922: [GC (Allocation Failure) [PSYoungGen: 1501051K->631966K(1833472K)] 2392189K->1523112K(3030016K), 1.5100144 secs] 
    ...[Times: user=1.49 sys=0.01, real=1.51 secs]

2017-02-14T15:31:20.335+0530: 627.705: [GC (Allocation Failure) [PSYoungGen: 1553054K->595007K(1842176K)] 2444200K->1570521K(3038720K), 1.3050284 secs] 
    ...[Times: user=1.27 sys=0.04, real=1.31 secs]

2017-02-14T15:33:33.682+0530: 761.052: [GC (Allocation Failure) [PSYoungGen: 1516095K->556800K(1842176K)] 2491609K->1596474K(3038720K), 1.6957154 secs] 
    ...[Times: user=1.67 sys=0.03, real=1.69 secs]

2017-02-14T15:33:35.378+0530: 762.748: [Full GC (Ergonomics) [PSYoungGen: 556800K->365446K(1842176K)] [ParOldGen: 1039673K->1196476K(2018304K)] 1596474K->1561923K(3860480K), [Metaspace: 70472K->70472K(1114112K)], 11.2779843 …
Run Code Online (Sandbox Code Playgroud)

java garbage-collection catalina

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

如何使用 Fabric 和 fabfile 解密受密码保护的 SSH 密钥?

我正在入门过程中Fabric 2.4.0,但我无法找到一种优雅且安全的方法来解密我的 SSH 密钥以将其传递给 Fabric。我的代码如下:

\n\n
#!/usr/bin/env python3\n"""fabfile"""\nfrom fabric import Connection\n\nc = Connection(\'user@ip.address\')\nresult = c.run(\'uname -s\')\n
Run Code Online (Sandbox Code Playgroud)\n\n

在这个简单的例子中,运行python fabfile.py我收到错误:

\n\n
File "/Users/user.name/GitHub/app_name/fabfile.py", line 6, in <module>\nresult = c.run(\'uname -s\')\nFile "<decorator-gen-3>", line 2, in run\nFile "/Users/user.name/anaconda/envs/virtual_env/lib/python3.6/site-packages/fabric/connection.py", line 29, in opens\nself.open()\nFile "/Users/user.name/anaconda/envs/virtual_env/lib/python3.6/site-packages/fabric/connection.py", line 615, in open\nself.client.connect(**kwargs)\nFile "/Users/user.name/anaconda/envs/virtual_env/lib/python3.6/site-packages/paramiko/client.py", line 437, in connect\npassphrase,\nFile "/Users/user.name/anaconda/envs/virtual_env/lib/python3.6/site-packages/paramiko/client.py", line 749, in _auth\nraise saved_exception\nFile "/Users/user.name/anaconda/envs/virtual_env/lib/python3.6/site-packages/paramiko/client.py", line 720, in _auth\nfilename, pkey_class, passphrase\nFile "/Users/user.name/anaconda/envs/virtual_env/lib/python3.6/site-packages/paramiko/client.py", line 571, in _key_from_filepath\nkey = klass.from_private_key_file(key_path, password)\nFile "/Users/user.name/anaconda/envs/virtual_env/lib/python3.6/site-packages/paramiko/pkey.py", line 206, in from_private_key_file\nkey = …
Run Code Online (Sandbox Code Playgroud)

python ssh paramiko fabric

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

如何同步 PostgreSQL 数据和 ReactNative 移动应用程序数据?

我正在开发一个用 Django 编写并使用 PostgreSQL 作为数据库后端的 Web 应用程序。我想启动一个 ReactNative 移动应用程序,以便用户可以离线操作该应用程序。我担心管理数据库冲突,即用户在移动应用程序上离线执行一个操作,在 Web 应用程序中执行一个冲突操作,然后这两个操作需要同步、冲突管理和合并。

我知道您不希望 ReactNative 直接从 ReactNative 连接到您的 PostgreSQL 数据库,如本问题所述。我也知道ReactNative中的 AsyncStorage。我不知道如何最好地整合两者。我看到了几个关于将 Web 应用程序数据与移动数据同步的问题(例如,this),但我正在专门寻找 PostgreSQL 和 ReactNative 解决方案。我在 ReactNative 中看到了很多DB 解决方案的结果,但我不是在寻找新的热点或最终不会维护的宠物项目。我也听说过RealmDB,它看起来不错,但似乎不是免费的。简而言之,我正在寻找最可靠、简单且经过验证的解决方案来管理 ReactNative 中的数据并与 PostgreSQL 同步。

我现在问的是没有任何 ReactNative 代码,因为我想确保我从一开始就正确设置了 ReactNative 应用程序,而不必回去重写我所有的数据存储代码。

举一个非常基本的例子,假设在地铁上且没有 WiFi 或移动数据时,用户task_Aincomplete->complete. 用户到达工作地点后跳上他的笔记本电脑并更改task_Afrom的状态incomplete->in_progress。当用户在 WiFi 上获取他的移动设备并同步应用程序数据时,使用存储的移动数据AsyncStorage和驻留在 PostgresDB 中的数据之间会发生冲突。

ReactNative给定 Web 应用程序使用 Django 和 PostgreSQL的最佳数据存储包装器是什么?

我也在Software Recommendations上问过这个问题,但那里非常安静。

postgresql android ios react-native

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

如何使用 Docker 清除 Django 的缓存?

我有一个 Django 项目,正在与 memcached 和 Docker 一起使用。当我sudo docker-compose up在开发中使用时,我希望清除整个缓存。有没有一种方法可以在每次重新运行时cache.clear()按照此问题sudo docker-compose up中所述运行,而不是在开发模式下禁用批量缓存?

我不确定这是否应该进入:

  1. docker-entrypoint.sh
  2. Dockerfile
  3. docker-compose.yml
  4. 别的地方?

docker-compose.yml:

version: "3"
services:
  redis:
    image: "redis:alpine"
    command: "redis-server --requirepass ${REDISPASS} --bind 0.0.0.0"
    ports:
      - '6379:6379'
  memcached:
    image: "memcached:latest"
    ports:
      - '11211:11211'
  nginx:
      image: nginx:latest
      volumes:
        - ./configuration/nginx/conf.d/:/etc/nginx/conf.d
        - ./configuration/nginx/realtime:/etc/nginx/realtime
        - ./static_cdn/static_root/static:/static
      ports:
        - 80:80
        - 443:443      
      depends_on:
        - app_main
        - app_async_app1
        - app_async_app2
  app_main:
      command: "djangoAppName.settings.prod ${SECRET_KEY} 1 ${DB_PASS}     ${REDISPASS}"      
      image: "django_image_name"
      ports:
        - 0003:0003
      volumes: …
Run Code Online (Sandbox Code Playgroud)

python django memcached docker docker-compose

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

为什么在函数外pylint要求使用大写的变量名?

为什么pylint在函数外部时接受大写变量,而在函数内部拒绝它们?相反,为什么pylint拒绝camelCase ouside函数并在函数内部接受它?

我刚刚安装了pylint(版本2.2.2)来检查我的Python3。一定错过了某些东西。我相关的Python /软件包版本是:

pylint 2.2.2
astroid 2.1.0
Python 3.6.7 | packaged by conda-forge | (default, Nov 20 2018, 18:20:05)
[GCC 4.2.1 Compatible Apple LLVM 9.0.0 (clang-900.0.37)]
Run Code Online (Sandbox Code Playgroud)

考虑下面的代码(test_1),其中我使用camelCase和大写的变量命名。大写的变量被接受(为什么?)而骆驼的情况被拒绝(我想是因为代码没有包装到函数中)。

'''
Nothing important
'''

fileHandler = open("afile.txt")

for line in fileHandler:
    Token = line.split("\t")
    Part_1 = Token[0]
    print(Part_1)
Run Code Online (Sandbox Code Playgroud)

哪个调用pylint:

$ pylint --py3k --enable=all  test_1.py 
************* Module test_1
test_1.py:5:0: C0103: Constant name "fileHandler" doesn't conform to UPPER_CASE naming style (invalid-name)

------------------------------------------------------------------
Your code has been rated at 8.00/10 (previous run: 8.00/10, +0.00)
Run Code Online (Sandbox Code Playgroud)

现在,如果我将所有内容都放入一个函数中(test_2)。 …

python pylint capitalize

4
推荐指数
2
解决办法
1564
查看次数

使用Eclipse"在文件中搜索"搜索文件夹名称

如何在Eclipse Mars 2.0中使用'search in path'来查找文件名中的字符串模式,还可以在文件夹名称中找到字符串模式?

我在git repo中有一个名为"Personal Finance"的文件夹,我主要使用Eclipse来处理它.当我在文件中搜索"财务"时,显示的唯一搜索结果是文件本身.Eclipse中有没有办法同时搜索文件名和文件夹名?

在此输入图像描述

eclipse

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