Вопрос или проблема
Я пытаюсь протестировать скрипт python-postgresql на Ubuntu 12.04.
Скрипт выглядит так:
import psycopg2
import sys
con = None
try:
con = psycopg2.connect(database="mydb", user="myuser")
cur = con.cursor()
cur.execute("SQL")
con.commit()
except psycopg2.DatabaseError, e:
if con:
con.rollback()
print 'Ошибка %s' % e
sys.exit(1)
finally:
if con:
con.close()
И ошибка, которую я получаю каждый раз, когда запускаю скрипт из терминала (python myscript.py
), выглядит так:
Ошибка: не удалось подключиться к серверу: Нет такого файла или директории
Сервер работает локально и принимает соединение на UNIX-доменном сокете "/tmp/.s.PGSQL.5432"?
У меня нет понятия, что это может значить, и я уже некоторое время ищу решение. Все безуспешно.
Буду признателен за любую помощь.
Может быть, вы забыли другие параметры?
con = psycopg2.connect(database=”mydb”,
host=”yourhostname”,
user=”myuser”,
password=”yourpassword”,
port=”5432″)
Где:
yourhostname = localhost, если ваш Python и сервер PostgreSQL находятся на одном компьютере, или адрес сервера PostgreSQL. Это можно найти, если вы войдете в модем вашего провайдера, если сервер PostgreSQL находится в вашей локальной сети (и т.д.)
yourpassword = пароль, который администратор сервера PostgreSQL назначил для доступа к серверу PostgreSQL
cur.execute(strQuery)
Где strQuery — это строковая переменная, содержащая ваш запрос.
Я не вижу утверждения, где вы определяете значение “SQL” ??
Ответ или решение
Запуск Python и PostgreSQL на Ubuntu 12.04
Для того чтобы успешно запустить скрипт на Python с использованием PostgreSQL на Ubuntu 12.04, необходимо убедиться в правильной настройке окружения и выполнении всех условий. Ниже представлены пошаговые инструкции по настройке и запуску приложения.
1. Установка Python и необходимых библиотек
Сначала убедитесь, что Python установлен в вашей системе. Вы можете установить его, выполнив следующую команду в терминале:
sudo apt-get update
sudo apt-get install python python-pip
Затем установите библиотеку psycopg2
, которая является необходимым интерфейсом для работы с PostgreSQL:
sudo apt-get install python-psycopg2
Если эта команда не сработает, вы можете попробовать установить библиотеку через pip
:
pip install psycopg2
2. Установка и настройка PostgreSQL
Убедитесь, что PostgreSQL установлен и запущен. Для установки выполните следующую команду:
sudo apt-get install postgresql postgresql-contrib
После установки PostgreSQL необходимо запустить службу:
sudo service postgresql start
3. Создание базы данных и пользователя
Вам нужно создать базу данных и пользователя, к которому будет осуществляться подключение через скрипт. Выполните следующие команды:
-
Запустите оболочку PostgreSQL:
sudo -u postgres psql
-
Создайте пользователя и базу данных:
CREATE USER myuser WITH PASSWORD 'yourpassword'; CREATE DATABASE mydb OWNER myuser;
-
Выдайте необходимые привилегии пользователю:
GRANT ALL PRIVILEGES ON DATABASE mydb TO myuser;
-
Выйдите из интерфейса PostgreSQL:
\q
4. Корректировка скрипта Python
Теперь давайте исправим ваш скрипт. Вы должны указать параметры подключения (хост, порт и пароль). Также необходимо заменить строку "SQL"
на ваш реальный SQL-запрос. Пример исправленного кода:
import psycopg2
import sys
con = None
try:
con = psycopg2.connect(database="mydb", user="myuser", password="yourpassword", host="localhost", port="5432")
cur = con.cursor()
strQuery = "YOUR SQL QUERY HERE" # Замените на ваш SQL-запрос
cur.execute(strQuery)
con.commit()
except psycopg2.DatabaseError as e:
if con:
con.rollback()
print('Error %s' % e)
sys.exit(1)
finally:
if con:
con.close()
5. Запуск скрипта
Теперь вы можете запустить ваш скрипт:
python myscript.py
6. Проверка состояния PostgreSQL
Если при запуске скрипта вы все еще получаете ошибку:
Error could not connect server: No such file or directory
Is the server running locally and accepting connection on unix domain socket "/tmp/.s.PGSQL.5432"?
Это означает, что PostgreSQL сервер либо не запущен, либо используется неправильный порт или хост. Вы можете проверить статус PostgreSQL с помощью команды:
sudo service postgresql status
Если сервер не запущен, используйте команду start
, как показано ранее.
Заключение
Следуя данным инструкциям, вы сможете без проблем запустить ваш скрипт Python с подключением к PostgreSQL на Ubuntu 12.04. Убедитесь, что все параметры подключения указаны правильно и что PostgreSQL успешно запущен перед выполнением вашего кода. Если возникнут дополнительные вопросы, не стесняйтесь обращаться за помощью.