我正在尝试执行一个简单的查询,但无论我如何传递参数,都会收到此错误.
这是查询(我使用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导致相同的错误.
我想通过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输出中打印警告消息?
我有一个有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有什么意义呢?
我尝试安装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) 目前在 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) 我试图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)的其他查询.
我正在使用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(会话/事务模式,不同的超时等),但无济于事.
当我尝试导入时,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
我有一个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 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但这对我不起作用。请帮我摆脱这个。我坚持了几个小时。
psycopg2 ×10
postgresql ×7
python ×7
django ×3
cursor ×1
importerror ×1
pgbouncer ×1
python-3.8 ×1
python-3.x ×1
sqlalchemy ×1
trac ×1