我收到错误OperationalError:FATAL:抱歉,使用psycopg2时已经有太多客户端了.完成后我在连接实例上调用close方法.我不确定是什么导致这个,这是我第一次使用python和postgresql,但我有几年的php,asp.net,mysql和sql server经验.
编辑:我在本地运行,如果连接正在关闭,那么我一次只打开一个连接.我确实有一个GUI打开数据库,但即使关闭我收到此错误.这是在我运行程序后不久发生的.我有一个函数我调用它返回一个打开的连接,如:
psycopg2.connect(的connectionString)
谢谢
最终编辑:这是我的错误,我在错误中递归调用相同的方法,一遍又一遍地打开相同的方法.这是一个漫长的一天..
我正在尝试将二进制数据(漩涡哈希)插入到PG表中并收到错误:
TypeError: not all arguments converted during string formatting
Run Code Online (Sandbox Code Playgroud)
码:
cur.execute("""
INSERT INTO
sessions
(identity_hash, posted_on)
VALUES
(%s, NOW())
""", identity_hash)
Run Code Online (Sandbox Code Playgroud)
我尝试在插入之前将conn.Binary("identity_hash")添加到变量,但得到相同的错误.
identity_hash列是bytea.
有任何想法吗?
我需要从html文件生成一个insert语句列表(对于postgresql),是否有可用于python的库来帮助我正确转义并引用名称/值?在PHP中,我使用PDO进行转义和引用,是否有任何等效的python库?
编辑:我需要生成一个带有sql语句的文件,以便以后执行
我正在使用PostgreSQL 9.1/PostGIS 1.5,psycopg2 2.4.2和pgbouncer 1.4.2运行Django 1.3.
在与数据库的每个连接上,我在pgbouncer.log中获得一个日志条目:
2011-11-20 02:15:25.027 29538 LOG S-0x96c2200:app_db/postgres@192.168.171.185:5432关闭因为:unclean server(age = 0).
我找不到任何解决这个问题的方法 - 任何人都知道为什么?我已经尝试重新配置pgbouncer(会话/事务模式,不同的超时等),但无济于事.
我有这个代码:
try:
principal = cls.objects.create(
user_id=user.id,
email=user.email,
path='something'
)
except IntegrityError:
principal = cls.objects.get(
user_id=user.id,
email=user.email
)
Run Code Online (Sandbox Code Playgroud)
它尝试使用给定的id和电子邮件创建用户,如果已存在,则尝试获取现有记录.
我知道这是一个糟糕的结构,无论如何它都会被重构.但我的问题是:
我如何确定IntegrityError发生了什么类型:与unique约束违规相关的一个((user_id,email)上有唯一键)或者与not null约束相关的那个(path不能为空)?
我尝试使用以下RunSQL命令运行迁移:
class Migration(migrations.Migration):
operations = [
RunSQL(
r'''
COPY auth_group (id, name) FROM stdin;
1 TEST-GROUP
\.
''')]
Run Code Online (Sandbox Code Playgroud)
它失败了:
File "/home/foo/local/lib/python2.7/site-packages/django/db/backends/utils.py", line 63, in execute
return self.cursor.execute(sql)
django.db.utils.ProgrammingError: syntax error at or near "1"
LINE 3: 1 TEST-GROUP
Run Code Online (Sandbox Code Playgroud)
有COPY不允许RunSQL吗?
我们使用psycopg2
昨天我错误地卸载了python 3.7版本。然后我再次安装python(这次是3.8版本)并再次设置我的环境。但是我无法启动具有 Postgres 连接的 Django 项目。实际上我无法在我的环境中安装“ psycopg2 ”。我搜索了几个小时并实施了我从网上获得的所有解决方案,但它不起作用。让我告诉你我到目前为止做了什么。
C:\Program Files\PostgreSQL\12\bin\在我的 PATH 中添加了。然后出现了一个新问题,其中包含一个包含 2 个重要错误的巨大错误报告。
错误:psycopg2 的构建轮失败
......................................
为 psycopg2 运行 setup.py install ... 错误
我尝试升级轮子,但它说,
要求已经是最新的
http://initd.org/psycopg/docs/install.html#install-from-source 我从这个站点了解到psycopg2需要python2版本。所以我也安装了python 2.7。
pip install psycopg2-binary但这对我不起作用。请帮我摆脱这个。我坚持了几个小时。
我最近买了一台 MacBook Pro 并为其设置了一些 python 和 Django 编程,但最终在安装 psycopg2 时遇到了问题,我已经尝试了几件事,但没有一个对我有用,这里留下了错误,
\nCollecting psycopg2\n Using cached psycopg2-2.9.3.tar.gz (380 kB)\n Preparing metadata (setup.py) ... error\n error: subprocess-exited-with-error\n \n \xc3\x97 python setup.py egg_info did not run successfully.\n \xe2\x94\x82 exit code: 1\n \xe2\x95\xb0\xe2\x94\x80> [23 lines of output]\n running egg_info\n creating /private/var/folders/7f/ssr40bmj6t3_yq0cv_43cttc0000gn/T/pip-pip-egg-info-noe7l09b/psycopg2.egg-info\n writing /private/var/folders/7f/ssr40bmj6t3_yq0cv_43cttc0000gn/T/pip-pip-egg-info-noe7l09b/psycopg2.egg-info/PKG-INFO\n writing dependency_links to /private/var/folders/7f/ssr40bmj6t3_yq0cv_43cttc0000gn/T/pip-pip-egg-info-noe7l09b/psycopg2.egg-info/dependency_links.txt\n writing top-level names to /private/var/folders/7f/ssr40bmj6t3_yq0cv_43cttc0000gn/T/pip-pip-egg-info-noe7l09b/psycopg2.egg-info/top_level.txt\n writing manifest file '/private/var/folders/7f/ssr40bmj6t3_yq0cv_43cttc0000gn/T/pip-pip-egg-info-noe7l09b/psycopg2.egg-info/SOURCES.txt'\n \n Error: pg_config executable not found.\n \n pg_config is required to build psycopg2 from source. Please add the …Run Code Online (Sandbox Code Playgroud) 我对 Python 很陌生,我们有一个应用程序容器和一个数据库容器。应用程序容器从 CLI 收集 DB_HOST、PORT 等值,并尝试在同一 Docker 主机上运行的容器化 Postgres DB 上创建表空间。
在执行查询时,我们收到以下错误。
psycopg2.errors.ActiveSqlTransaction: CREATE TABLESPACE cannot run inside a transaction block
Run Code Online (Sandbox Code Playgroud)
使用的Python库:
psycopg2psycopg2.extensions import ISOLATION_LEVEL_AUTOCOMMIT应用程序文档示例
FROM python:3.7-alpine
RUN apk update && \
apk add --no-cache openssh sshpass && \
apk add --no-cache --virtual .build-deps gcc musl-dev && \
apk add linux-headers && \
apk add python3-dev && \
apk add postgresql-dev && \
apk add postgresql-client && \
apk add bash && \
apk add libffi-dev make …Run Code Online (Sandbox Code Playgroud) 我正在开发一个 Django 项目。我决定在 PostgreSQL 中编写逻辑代码,而不是用 Python 编写。因此,我在 PostgreSQL 中创建了一个存储过程。例如,存储过程如下所示:
create or replace procedure close_credit(id_loan int)
language plpgsql
as $$
begin
update public.loan_loan
set sum = 0
where id = id_loan;
commit;
end;$$
Run Code Online (Sandbox Code Playgroud)
然后在settings.py中,我做了以下更改:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'pawnshop',
'USER': 'admin',
'PASSWORD': password.database_password,
'HOST': 'localhost',
'PORT': '',
}
}
Run Code Online (Sandbox Code Playgroud)
那么问题来了,如何在views.py中调用这个存储过程呢?
附注
也许这听起来像是一个愚蠢的问题,但我确实在 Django 中找不到任何解决方案。
psycopg2 ×10
postgresql ×8
django ×6
python ×6
backend ×1
pgbouncer ×1
postgres-12 ×1
python-3.8 ×1
python-3.x ×1
sql ×1