标签: psycopg2

psycopg2 TypeError:在字符串格式化期间不是所有参数都被转换

我正在尝试执行一个简单的查询,但无论我如何传递参数,都会收到此错误.

这是查询(我使用Trac db对象连接到DB):

cursor.execute("""SELECT name FROM "%s".customer WHERE firm_id='%s'""" % (schema, each['id']))
Run Code Online (Sandbox Code Playgroud)

schema和每个['id']都是简单的字符串

print("""SELECT name FROM "%s".customer WHERE firm_id='%s'""" % (schema, each['id']))
Run Code Online (Sandbox Code Playgroud)

结果: SELECT name FROM "Planing".customer WHERE firm_id='135'

有错误是删除后引用firm_id=,但该方式参数被视为一个整数,并::text导致相同的错误.

python trac psycopg2

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

通过psycopg2获取警告消息

我想通过psycopg2调用plpgsql函数并查看警告消息.即,我有这个功能:

create or replace function test_warning() returns void as $$
begin
raise warning 'this is only a test';
end; 
$$
language plpgsql;
Run Code Online (Sandbox Code Playgroud)

并在python中调用它:

import psycopg2
conn = psycopg2.connect(conn_string)
cursor = conn.cursor()
cursor.callproc("test_warning")
# or so:
cursor.execute('SELECT test_warning()')
Run Code Online (Sandbox Code Playgroud)

不幸的是,plpgsql中定义的警告消息不会出现在python输出中的任何位置.有没有办法在python输出中打印警告消息?

python postgresql psycopg2

11
推荐指数
2
解决办法
3615
查看次数

如何在psycopg2中使用服务器端游标

我有一个有400万行的表,我用psycopg2来表示:

   SELECT * FROM ..WHERE query
Run Code Online (Sandbox Code Playgroud)

我之前没有听说过服务器端光标,当你期待很多结果的时候我正在阅读它.

我发现文档有点受限,我有一些基本问题.

首先,我将服务器端游标声明为:

cur = conn.cursor('cursor-name')
Run Code Online (Sandbox Code Playgroud)

然后我执行查询:

cur.itersize = 10000
sqlstr = "SELECT clmn1, clmn2 FROM public.table WHERE clmn1 LIKE 'At%'"
cur.execute(sqlstr)
Run Code Online (Sandbox Code Playgroud)

我的问题是:我现在该怎么办?我如何得到结果?

我是否遍历行:

row = cur.fetchone()
while row:
   row = cur.fetchone()
Run Code Online (Sandbox Code Playgroud)

或者我使用fetchmany(),我这样做:

row = cur.fetchmany(10)
Run Code Online (Sandbox Code Playgroud)

但在第二种情况下,我如何"滚动"结果?

itersize有什么意义呢?

python postgresql psycopg2 cursor

11
推荐指数
2
解决办法
5972
查看次数

安装psycopg2 == 2.6.2时出错

我尝试安装psycopg2 == 2.6.2时遇到问题.我已经安装了postgresql 9.6.我正在使用virtualenv.欢迎任何帮助.

Collecting psycopg2==2.6.2 (from -r requirements.txt (line 21))
  Downloading psycopg2-2.6.2.tar.gz (376kB)
    100% |????????????????????????????????| 378kB 281kB/s 
    Complete output from command python setup.py egg_info:
    running egg_info
    creating pip-egg-info/psycopg2.egg-info
    writing top-level names to pip-egg-info/psycopg2.egg-info/top_level.txt
    writing dependency_links to pip-egg-info/psycopg2.egg-info/dependency_links.txt
    writing pip-egg-info/psycopg2.egg-info/PKG-INFO
    writing manifest file 'pip-egg-info/psycopg2.egg-info/SOURCES.txt'
    Error: could not determine PostgreSQL version from '10.0'

    ----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-k7nulk7r/psycopg2/
Run Code Online (Sandbox Code Playgroud)

python postgresql psycopg2

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

ImproperlyConfigured(“加载 psycopg2 模块时出错:%s” % e)

目前在 MacOS Monterey 上使用 Django 4.0 和 Python 3.10.0。运行命令后

python3 manage.py runserver
Run Code Online (Sandbox Code Playgroud)

我收到这个错误

ImproperlyConfigured("Error loading psycopg2 module: %s" % e)
django.core.exceptions.ImproperlyConfigured: Error loading psycopg2 module: dlopen(/Users/tonyingle/.local/share/virtualenvs/total-weather-backend-nYZrqAi-/lib/python3.10/site-packages/psycopg2/_psycopg.cpython-310-darwin.so, 0x0002): symbol not found in flat namespace '_PQbackendPID'
Run Code Online (Sandbox Code Playgroud)

我已经在 Pipenv shell 及其外部安装了 pyscopg2 和 psycog2-binary。奇怪的是,一切都工作正常,直到我意识到我必须配置我的 settings.py 文件来解决我的 cors 问题,然后一切都变得混乱。

也许settings.py中的一些相关设置

ALLOWED_HOSTS = [
    "https://total-weather-backend.herokuapp.com/", "http://127.0.0.1:8000/"]

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'api',
    'rest_framework',
    'djoser',
]

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'whitenoise.middleware.WhiteNoiseMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'corsheaders.middleware.CorsMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

DATABASES = { …
Run Code Online (Sandbox Code Playgroud)

python django psycopg2

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

psycopg2不执行PostgreSQL函数

我试图psycopg2像这样调用一个函数:

conn = psycopg2.connect(host="name.host.ex", user="username", password="secret")
cur = conn.cursor()
cur.callproc("f_do_action", ["aaa", "bbb"])
cur.close()
conn.close()
Run Code Online (Sandbox Code Playgroud)

psql一切调用此函数工作正常但psycopg2似乎没有使用任何东西.我也不例外.它只是没有调用实际数据库上的函数.

还有来自psycopg2work(SELECT, INSERT)的其他查询.

python postgresql psycopg2

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

pgbouncer - 关闭因为:每个连接上都有不洁净的服务器

我正在使用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(会话/事务模式,不同的超时等),但无济于事.

django postgresql psycopg2 pgbouncer

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

ImportError:没有名为'psycopg2._psycopg'的模块

当我尝试导入时,psycopg2它显示在我的下面日志:

Traceback (most recent call last):
  File "D:/Desktop/learn/python/webcatch/appserver/testpgsql.py", line 2, in <module>
    import psycopg2
  File "D:/Desktop/learn/python/webcatch/appserver/webcatch/lib/site-packages/psycopg2-2.6.1-py3.5-win32.egg/psycopg2/__init__.py", line 50, in <module>
    from psycopg2._psycopg import BINARY, NUMBER, STRING, DATETIME, ROWID
ImportError: No module named 'psycopg2._psycopg'
Run Code Online (Sandbox Code Playgroud)

我该如何解决?我的平台是win10(64),版本是python 3.5

psycopg2 importerror python-3.x

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

sqlalchemy.pool + psycopg2超时问题

我有一个Web应用程序超时问题,我怀疑错误是在数据库中.查询运行时间过长.

如何增加设置的允许运行时间?

我使用sqlalchemy和使用数据库池psycopg2.

我的数据库是Postgres数据库.

  import psycopg2
  import sqlalchemy.pool as pool

  def generate_conn_string(db_name):
        db_name = db_name.upper()
        conn_string = "host='{}' port='{}' dbname='{}' user='{}' password='{}' ".format(
            os.environ.get('DB_HOST_' + db_name),
            os.environ.get('DB_PORT_' + db_name),
            os.environ.get('DB_NAME_' + db_name),
            os.environ.get('DB_USER_' + db_name),
            os.environ.get('DB_PASSWORD_' + db_name))
        return conn_string

   def get_conn_():
        db_name = "mydb"
        conn_string = Pooling.generate_conn_string(db_name)
        conn = psycopg2.connect(conn_string)
        return conn

   connection_pool = pool.QueuePool(get_conn, max_overflow=30, pool_size=5)
Run Code Online (Sandbox Code Playgroud)

python postgresql sqlalchemy psycopg2

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

无法使用 Python 3.8 在 Windows 10 上安装“psycopg2”

昨天我错误地卸载了python 3.7版本。然后我再次安装python(这次是3.8版本)并再次设置我的环境。但是我无法启动具有 Postgres 连接的 Django 项目。实际上我无法在我的环境中安装“ psycopg2 ”。我搜索了几个小时并实施了我从网上获得的所有解决方案,但它不起作用。让我告诉你我到目前为止做了什么。


  • 首先它说要在我的 PATH 中添加 Postgres,所以我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

  • 我重新安装了 PostgreSQL,但它不起作用。
  • 我删除了我的虚拟环境并重新创建,但它不起作用。
  • 有人说他们通过跑步解决了这个问题,pip install psycopg2-binary但这对我不起作用。

请帮我摆脱这个。我坚持了几个小时。

django postgresql psycopg2 python-3.8

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