问题标签 [pg8000]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
postgresql - 使用 psycopg2 连接到 App Engine (Google Cloud) 上的 Postgres
我希望使用psycopg2
在 App Engine(标准)上运行的 Python 应用程序连接到我的 PostgresSQL 实例。我已经搜索了很多天,但我无法找到一种解决方案,可以让我使用psycopg2
. 所有解决方案(包括官方文档中的解决方案)都指向使用pg8000
.
我试图psycopg2
用作驱动程序的原因是我想在单个事务中运行多个 sql 查询,例如:
任何帮助将不胜感激。
python - 尝试将日期时间插入 Postgresql (pg8000) 时出现键错误
我试图在 pgsql 中插入一个日期时间
f'UPDATE userdata SET claimed = {fclaim} WHERE userid = {user.id}'
以下是 fclaim 变量的制作方法
当我尝试将 fclaim 插入 postgresql 时,出现以下错误
在 ubuntu 20.04 上使用 python 3.6.11
sqlalchemy - sqlalchemy ORM 调用失败并出现 TypeError: expected bytes, str found
我正在用我编写的一些代码进行以下(相对)简单的调用:
我对此代码有两组集成测试,一组在本地运行并使用psycops2
TLS,另一组在 GCP 开发环境(GCP 云功能)中运行并使用pg8000
UNIX 套接字(GCP 要求(?)云功能通过 UNIX 套接字连接到 Cloud SQL - 请参见此处)。本地集成测试运行良好。但是,开发测试可靠地失败并出现以下错误:
这个特定的函数调用实际上只是这种失败的一个例子;我所有的数据库调用都失败并出现相同的_execute_and_instances
错误!
也许有人对解决此问题的方法有所了解?
python-3.x - 需要使用python的dbase连接的概述解释
我使用 python 和 postgreql 已经一年多了。我可以通过盲目使用各种库来连接和使用 postgres 数据库。但是每当我改变平台(最近从 macOS 笔记本电脑到远程 ubuntu 服务器)时,我都会经历一天左右的时间来尝试让库工作,例如。我在某些模块中使用了“pyodbc”,但是当我将代码迁移到服务器时,我不得不切换到“pg8000”,因为这些模块一直在抛出错误。
有人可以解释或指向一个链接,解释 python 如何连接到 dB 的吗?例如,为什么我需要一个用于“pyodbc”的 MS ODBC 驱动程序来连接到 Azure SQL 或 postgresql,但“pg8000”似乎根本不需要连接到 postgresql?当我移动到 Ubuntu 环境并安装 ODBC 驱动程序时,它们显示在 /etc 和 /opt(用于 MS ODBC)下的根目录下,但也出现在我的 Conda 环境(/anaconda3/envs/)中,我不知道哪个是'ODBC.ini' 的正确选择?
就像我说的,我可以让事情发挥作用,但我真的不明白它们为什么会发挥作用,这意味着我每次处理环境变化时都会浪费时间进行试验。我还没有在网上找到一个解释,它涵盖的不仅仅是一个非常具体的情况,例如。'这里是如何安装我们的驱动程序......'任何帮助将不胜感激。
最终更新:
跟随回应特别是。@Thompson 下图似乎是最终解释,我对在哪里寻找答案有了更好的了解。对于记录 pyodbc,SQLAlchemy 和 pg8000 一直是我选择的工具,除了问题中所述之外没有任何问题。
python-3.x - 基于纯 python 的 postgresql/redshift 驱动程序上是否有服务器端光标?
我正在使用pg8000
带有 Python 3 的包来查询表,并注意到应用程序的内存消耗随着表的记录数的增长而增长,现在已达到超过 16GB 的内存消耗。
在检查包的游标行为时,我发现游标在被 any或方法出队之前pg8000
将整个结果集缓存到属性下的内存队列中。curr._cached_rows
.fetchone()
.fetchmany(n)
.fetchall()
在我的特定情况下,我通过在 Glue 作业上使用 Python shell 来提取 AWS Redshift 上的记录,该作业带有 2 个限制:
- 不支持基于 Python 的 C 包(
psycopg
不幸的是,不支持服务器端游标的缓存) - 最大 16GB 内存。
我浏览了pg8000
文档,但找不到任何关于设置服务器端光标的参考。无论如何设置服务器端光标pg8000
?或者是否有任何其他支持服务器端光标的 postgres/redshift 纯 Python 包?
xml - 使用 pg8000 将 xml 数据插入 PostgreSQL
我有一个包含 XML 数据的 S3 文件,我需要将其插入 Aurora PostgreSQL 数据库 (PostgreSQL 11.9) 中的表中。为此,我正在尝试使用 AWS lambda。在 lambda 函数中,我从 S3 对象读取数据并使用 pg8000 尝试将记录插入表中。插入 sql 失败
例子 -
S3 文件中的 XML
从 lambda 中的 S3 文件读取数据的代码
插入数据的代码
我也试过
关于如何将 XML 数据插入 PG 中的表的任何建议?
python - SQLAlchemy,Postgres:在没有事务的情况下运行 SQL
我正在使用 SQLAlchemy 和 pg8000 连接到 Postgres 数据库。
我检查了表pg_stat_activity,它向我显示了一些处于“事务空闲”状态的选择查询,其中很多。但是应用程序的读取比写入多得多,也就是说,插入很少而且相差甚远。
我怀疑每个查询都会创建一个新事务,即使对于简单的选择语句也是如此。
是否可以在不需要事务的情况下运行只读查询?这样就不需要提交/回滚了吗?
目前,该应用程序使用方法sqlalchemy.engine.Engine.execute运行其查询以进行 CRUD 操作和游标以调用存储过程。我应该如何更新这些方法调用以表明我希望其中一些不启动事务?
python - 从并行查询高效创建 Panda 的 DataFrame
我有一个脚本,我需要通过查询数据库来创建一个大型数据框。我创建了一个类,它将查询划分为单独的进程,在 where 子句中划分主键并将成批的记录推送到队列中。完成这项工作的辅助函数如下。
我当前的实现结合了我的 fetch_queue 中的所有批处理列表,并在查询完所有数据后将它们转换为 pandas 数据框。但是,这通常需要与从数据库中提取所有数据一样长或更长的时间。
我最初的想法是有一个“reducer process”,它在获取过程中从 fetch_queue 创建更小的数据帧,并将它们附加到一个列表中,并在获取所有数据后与 pandas concat 结合。但是,由于 pd.concat 中的指数复制,这比等待结束为记录制作数据帧要慢。(如果有必要,我可以选择减少批次)
似乎我缺少一些效率,以便能够在加载所有数据之前开始处理位于内存中的数据的数据帧。
更新
跑步
运行时间为 13 秒,与将数据拉入并行进程所需的时间大致相同,这使得 pandas 处理可以忽略不计。我不确定 Pool.map() 的实现如何将数据传递到主进程中,但与尝试使用队列相比,它的开销似乎要少得多。
python - 无法使用 pg8000 连接到 AWS RDS Postgres,但可以使用 psycopg2
朋友们,
我正在尝试从运行在 EC2 机器上的 python 脚本连接到 AWS RDS 中的 Postgres 实例。它与 psycopg2/sqlalchemy 配合得很好
但是当我使用 pg8000/sqlalchemy 作为
错误信息是
我也尝试设置connect_args={'ssl_context': True}
连接但仍然失败。有人有什么想法吗?我正在使用 python v3.6、sqlalchemy v1.4.15 和 pg8000 v1.19.4。谢谢你。
python - 传递给 sqlalchemy 的 create_engine 的正确 SSL 参数是什么?
我无法确定在 Heroku 上使用 Django 与 Python 3.7.10 和 sqlalchemy 1.3.23 连接到 Postgres 数据库的正确参数。我知道这不是 sqlalchemy 的最新版本,但是在 Python 从 3.7 更新的前一周开始失败,所以我对发生了什么感到困惑。我发现 sqlalchemy 的文档有点难以浏览,当仅更新 Python 时它停止工作也无济于事。
所以基本上在 Python 中,连接是在这一行中设置的:
当我去执行时Database
,我得到了这个:
这似乎是 sqlalchemy 的一部分。
运行脚本时出现的错误是:TypeError: connect() got an unexpected keyword argument 'ssl'
.
我已经尝试将参数更改为ssl_mode
并且sslmode
因为我已经看到 SO 帖子和发布类似问题的问题,但是这些更改都没有做任何事情。我也试过像这样向数据库调用添加另一个参数:db = records_client.Database(DB_URL_FROM_ENV_VAR, connect_args={'sslmode':'require'})
但都无济于事。
如何配置数据库 URL 和/或使用 SSL 的连接尝试以连接到数据库?
这是具有以下设置的完整堆栈跟踪: