小编Jho*_*nny的帖子

将GeoDataFrame写入SQL数据库

我希望我的问题不是荒谬的,因为令人惊讶的是,这个问题在热门网站上显然还没有被提及(据我所知).

情况是我有几个csv文件,总共包含超过1个Mio观测值.每个观察都包含一个邮政地址.我打算将所有文件读入单个GeoDataFrame,对地址进行地理编码,在给定shapefile的情况下执行空间连接,并为每行保存多边形中的一些信息.我想这是相当标准的.这是一次性数据清理过程的一部分.

我的目标是使用此最终数据集设置数据库.这是因为它允许我非常容易地共享和搜索数据,以及例如在网站上绘制一些观察结果.此外,它使得根据某些标准选择观察结果变得非常容易,然后进行一些分析.

我的问题是插入GeoDataFrame到数据库的功能似乎并没有被还没有实现 - 这显然是因为GeoPandas应该是对数据库的一个替补多("GeoPandas使您可以轻松地做在巨蟒行动,否则将需要的空间数据库,作为PostGIS").

当然,我可以遍历每一行并"手动"插入每个数据点,但我在这里寻找最佳解决方案.对于任何解决方法,我也担心数据类型可能与数据库的数据类型冲突.这里有"最好的方式"吗?

谢谢你的帮助.

python mysql pandas geopandas

7
推荐指数
2
解决办法
4248
查看次数

将参数从 Powershell 传递到批处理脚本

我需要将带有特殊字符的密码从 powershell 脚本automation.ps1传递到批处理脚本batch_script.bat,然后通过管道将其传输到main.py. 从batch_script.batto管道main.py工作正常,即身份验证成功。但是,当我运行上述整个过程时,身份验证失败,但echoing the password 显示正确的密码字符串。

我的猜测是特殊字符存在问题。传递这些字符串的安全方法是什么?

背景

我想通过 Python 脚本从某些外部源自动执行每日下载main.py。此过程需要密码。所以我写了一个batch_script.bat在提示输入密码时将密码传递给 Python 脚本的方法。但是,我不想将密码作为纯文本存储在批处理脚本中,所以我加密了密码并编写了另一个层automation.ps1来解密密码并将其作为纯文本传递给batch_script.bat.

自动化.ps1

# get password
$securePassword = Get-Content "<file_path>" | ConvertTo-SecureString
$credentials = New-Object System.Management.Automation.PsCredential("<user_name>",$securePassword)
$unsecurePassword = ($credentials).GetNetworkCredential().Password

# call script
$script = "<path>\batch_script.bat"
$args = @("`"<user name>`"","`"$unsecurePassword`"")
start-process $script $args
Run Code Online (Sandbox Code Playgroud)

批处理脚本.bat

(我知道在这个例子中我丢弃了传递的用户名,只是想保留我传递多个参数的事实,以防与它有任何相关性)

@echo off
SET username=%~1
SET password=%~2
echo(%password%|python main.py
Run Code Online (Sandbox Code Playgroud)

windows powershell batch-file

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

统计每个请求的重试次数

我使用 packagerequests一起urllib3.util.retry.Retry()发送数以万计的查询。我试图计算查询次数和必要尝试的次数,直到成功检索到所需的数据。我的目标是构建 API 可靠性的衡量标准。

为了解决这个问题,我们假设 的 Response 对象requests包含以下数据:

from requests import Session
from urllib3.util.retry import Retry
from requests.adapters import HTTPAdapter

def create_session():
    session = Session()
    retries = Retry(
        total = 15,
        backoff_factor = 0.5,
        status_forcelist = [401, 408, 429, 500, 502, 504],
        allowed_methods = frozenset(["GET"])
    )

    session.mount('http://', HTTPAdapter(max_retries=retries))
    session.mount('https://', HTTPAdapter(max_retries=retries))

    return session

urls = ['https://httpbin.org/status/500']
count_queries = len(urls)
count_attempts = 0

with create_session() as s:
    for url in urls:
        response = s.get(url)
        count_attempts += …
Run Code Online (Sandbox Code Playgroud)

python urllib3 python-requests

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