我一直在解决这个问题.我设置了一台全新的机器.我已经安装了postgresql和我所有其他依赖项的新副本.基本上,我随机地将这些数据库断开连接.我可以执行相同的请求,无论是有效还是无效.外观非常不确定.在Postgresql上查看日志,它甚至没有连接.现在,我希望如果它从未连接过,我会在建立连接并获取光标时遇到此问题,但是我在以后尝试实际使用连接时会得到它.鉴于下面的回溯,我希望看到在pg日志中建立连接,然后由于某种原因断开连接.我没有,所以我想知道是否有一些不匹配的线索.
Traceback (most recent call last):
File "/usr/local/lib/python2.6/dist-packages/Django-1.1-py2.6.egg/django/core/handlers/wsgi.py", line 242, in __call__
response = self.get_response(request)
File "/usr/local/lib/python2.6/dist-packages/Django-1.1-py2.6.egg/django/core/handlers/base.py", line 73, in get_response
response = middleware_method(request)
File "/usr/local/lib/python2.6/dist-packages/Django-1.1-py2.6.egg/django/middleware/locale.py", line 16, in process_request
language = translation.get_language_from_request(request)
File "/usr/local/lib/python2.6/dist-packages/Django-1.1-py2.6.egg/django/utils/translation/__init__.py", line 97, in get_language_from_request
return real_get_language_from_request(request)
File "/usr/local/lib/python2.6/dist-packages/Django-1.1-py2.6.egg/django/utils/translation/trans_real.py", line 349, in get_language_from_request
lang_code = request.session.get('django_language', None)
File "/usr/local/lib/python2.6/dist-packages/Django-1.1-py2.6.egg/django/contrib/sessions/backends/base.py", line 63, in get
return self._session.get(key, default)
File "/usr/local/lib/python2.6/dist-packages/Django-1.1-py2.6.egg/django/contrib/sessions/backends/base.py", line 172, in _get_session
self._session_cache = self.load()
File "/usr/local/lib/python2.6/dist-packages/Django-1.1-py2.6.egg/django/contrib/sessions/backends/db.py", line 16, in load
expire_date__gt=datetime.datetime.now()
File "/usr/local/lib/python2.6/dist-packages/Django-1.1-py2.6.egg/django/db/models/manager.py", line 120, …Run Code Online (Sandbox Code Playgroud) 在将数据插入我的数据库时,我遇到了一个重大的速度障碍.您可以从下面的代码中看到,我只是构建SQL语句以传递给execute命令.值是正确的,一切都很好,但python解释器似乎是在运行时添加和删除params中的引号.
这是将空间数据插入数据库的正确方法.
INSERT INTO my_table(
name, url, id, point_geom, poly_geom)
VALUES ('test', 'http://myurl', '26971012',
ST_GeomFromText('POINT(52.147400 19.050780)',4326),
ST_GeomFromText('POLYGON(( 52.146542 19.050557, bleh, bleh, bleh))',4326));
Run Code Online (Sandbox Code Playgroud)
这在Postgres查询编辑器中是可验证的......现在,当我在下面运行Python代码时,它会在ST_GeomFromText函数周围添加双引号,然后从id列中删除引号.
INSERT INTO my_table(
name, url, id, point_geom, poly_geom)
VALUES ('test', 'http://myurl', 26971012,
"ST_GeomFromText('POINT(52.147400 19.050780)',4326)",
"ST_GeomFromText('POLYGON(( 52.146542 19.050557, 52.148430 19.045527, 52.149525 19.045831, 52.147400 19.050780, 52.147400 19.050780, 52.146542 19.050557))',4326)");
Run Code Online (Sandbox Code Playgroud)
这导致插入失败,PostGIS声称它不是一个合适的几何.当我打印每个参数在屏幕上查看时,引号没有什么好玩的,所以我认为问题必须在执行命令中.我正在使用Python 2.7 ...任何人都可以帮助如何防止这种疯狂继续下去?
conn = psycopg2.connect('dbname=mydb user=postgres password=password')
cur = conn.cursor()
SQL = 'INSERT INTO my_table (name, url, id, point_geom, poly_geom) VALUES (%s,%s,%s,%s,%s);'
Data = name, url, id, point, polygon …Run Code Online (Sandbox Code Playgroud) 是否可以通过psycopg2运行以下命令?如果是这样,我该怎么办?
COPY table_name(col1,col2) FROM 'path/to/file.csv' WITH HEADER DELIMITER ',' CSV;
Run Code Online (Sandbox Code Playgroud) 在Python psycopg2中如何检查是否存在行?
def track_exists(self, track_id):
cur = self.conn.cursor()
cur.execute("SELECT fma_track_id FROM tracks WHERE fma_track_id = %s", (track_id,))
if cur.fetchall() > 0:
return true
else:
return false
Run Code Online (Sandbox Code Playgroud)
目前我正在接受
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "mumu.py", line 38, in track_exists
if cur.fetchall() > 0:
TypeError: 'NoneType' object has no attribute '__getitem__'
Run Code Online (Sandbox Code Playgroud) 我使用Python 3使用virtualenvwrapper创建了一个虚拟环境.
mkvirtualenv foo -p /usr/bin/python3
Run Code Online (Sandbox Code Playgroud)
我试图pip安装psycopg2并得到以下错误:
./psycopg/psycopg.h:30:20: fatal error: Python.h: No such file or directory
Run Code Online (Sandbox Code Playgroud)
我有最新版本的python-dev.我可以psycopg2使用Python 2 成功安装virtualenv.
使用Python 3在virtualenv中安装它的诀窍是什么?
这是我第一个广泛使用psycopg2的项目.我试图找到一种方法来提取psql错误消息,无论何时连接尝试失败.我已经测试过,如果所有变量都设置正确,下面的代码就可以工作,但是每当出现错误情况时(例如用户选择不存在的数据库),Python会给我以下内容:
I am unable to connect to the database
None
Traceback (most recent call last):
File "./duplicate_finder.py", line 163, in <module>
main(sys.argv[1:])
File "./duplicate_finder.py", line 142, in main
print e.diag.message_detail
AttributeError: 'OperationalError' object has no attribute 'diag'
Run Code Online (Sandbox Code Playgroud)
是否有一个简单的catch-all方法来捕获psql在连接失败时生成的任何错误消息,或者我是否需要编写除多个psycopg2异常的块之外的其他消息?
从我的脚本中提取:
import sys, getopt, os, time, csv, psycopg2
...
...
conn_string = "host=" + dbhost + " dbname=" + database + " user=" + dbuser + " password=" + dbpass
try:
conn = psycopg2.connect(conn_string)
except psycopg2.Error as e:
print "Unable to connect!" …Run Code Online (Sandbox Code Playgroud) 我想通过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输出中打印警告消息?
我已经尝试从此站点安装psycopg2(PostgreSQL数据库adapater),但是当我尝试将CD装入软件包并写入后进行安装时
python setup.py install
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
Please add the directory containing pg_config to the PATH
or specify the full executable path with the option:
python setup.py build_ext --pg-config /path/to/pg_config build ...
or with the pg_config option in 'setup.cfg'.
Run Code Online (Sandbox Code Playgroud)
我也尝试过“ sudo pip install psycopg2”,并且得到了相同的消息。
阅读完文档后,它要求查看setup.cfg文件(如下):
[build_ext]
define=
# PSYCOPG_DISPLAY_SIZE enable display size calculation (a little slower)
# HAVE_PQFREEMEM should be defined on PostgreSQL >= 7.4
# PSYCOPG_DEBUG can be added to enable verbose debug information
# "pg_config" is …Run Code Online (Sandbox Code Playgroud) 我在用psycopg2 2.6.1.我有一堆查询需要按顺序执行.
conn = psycopg2.connect(database=redshift_database,
user=redshift_user,
password=os.environ.get("PGPASSWORD"),
host=redshift_cluster,
port=redshift_port)
cursor = conn.cursor()
queries = [q1, q2, q3....] ## a list of queries
for query in queries:
try:
cursor.execute(query)
except:
print e.message
Run Code Online (Sandbox Code Playgroud)
假设q1失败了SSL connection has been closed unexpectedly.然后我的其余查询也失败了cursor already closed.如何确保如果一个查询失败,则可以成功执行以下查询.
目前在 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 ×10
python ×9
postgresql ×7
django ×2
database ×1
postgis ×1
python-3.3 ×1
sql ×1
virtualenv ×1