Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 26, 2021 16:15:30

ekssist
Зарегистрирован: 2021-06-26
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Запись в Postgres из CGI скрипта.

Привет всем!

Нужен CGI скрипт который запишет в Postgres параметры передаваемые в URL,
например: http://127.0.0.1/script_cgi-db.py?event=event&calledNumber=calledNumber

По отдельности скрипты работают, а вместе скомпоновать у меня не получается,
подскажите пожалуйста как надо делать что бы этот скрипт заработал.
# Python 3.6.9

 #!/usr/bin/env python3
# -*- coding: utf-8 -*-
import psycopg2
from cgi import parse_qs, escape
import os
### CGI
url = parse_qs(os.environ.get('QUERY_STRING','').encode('utf-8', 'surrogateescape').decode('utf-8'))
event = url.get('event', [''])[0]
calledNumber = url.get('calledNumber', [''])[0]
### PostgreSQL
conn = psycopg2.connect(user='phonecall', password='********', database='phonecall', host='127.0.0.1')
cursor = conn.cursor()
insert_query = """ INSERT INTO phonecall (event, callednumber) VALUES ('event', 'callednumber')"""
cursor.execute(insert_query)
conn.commit()
cursor.close()
conn.close()

При расcкоментировании “import psycopg2” ошибка:
Traceback (most recent call last):: /home/avtt/www/test/account/script_cgi-db.py
File “/home/avtt/www/test/account/script_cgi-db.py”, line 3, in <module>: /home/avtt/www/test/account/script_cgi-db.py
import psycopg2: /home/avtt/www/test/account/script_cgi-db.py
ModuleNotFoundError: No module named ‘psycopg2’: /home/avtt/www/test/account/script_cgi-db.py
End of script output before headers: script_cgi-db.py

Отредактировано ekssist (Июнь 26, 2021 17:31:50)

Офлайн

#2 Июнь 26, 2021 19:08:44

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2751
Репутация: +  184  -
Профиль   Отправить e-mail  

Запись в Postgres из CGI скрипта.

pip install psycopg2



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#3 Июнь 26, 2021 19:44:02

ekssist
Зарегистрирован: 2021-06-26
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Запись в Postgres из CGI скрипта.

Rodegast
pip install psycopg2

этого не достаточно?

pip3 install psycopg2
Collecting psycopg2
Installing collected packages: psycopg2
Successfully installed psycopg2-2.9.1

Если из командной строки запустить, то в бд запишется.

 #!/usr/bin/env python3
# -*- coding: utf-8 -*-
import psycopg2
### PostgreSQL
conn = psycopg2.connect(user='phonecall', password='********', database='phonecall', host='127.0.0.1')
cursor = conn.cursor()
insert_query = """ INSERT INTO phonecall (event, callednumber) VALUES ('event', 'callednumber')"""
cursor.execute(insert_query)
conn.commit()
cursor.close()
conn.close()

Если URLом ткнуть, то параметры будут получены

 #!/usr/bin/env python3
# -*- coding: utf-8 -*-
from cgi import parse_qs, escape
import os
### CGI
url = parse_qs(os.environ.get('QUERY_STRING','').encode('utf-8', 'surrogateescape').decode('utf-8'))
event = url.get('event', [''])[0]
calledNumber = url.get('calledNumber', [''])[0]

По отдельности они работают, а вместе не получается.

Отредактировано ekssist (Июнь 26, 2021 20:05:10)

Офлайн

#4 Июнь 26, 2021 21:10:26

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2751
Репутация: +  184  -
Профиль   Отправить e-mail  

Запись в Postgres из CGI скрипта.

А ты случайно гадость под названием virtual event не используешь?



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#5 Июнь 26, 2021 21:17:21

ekssist
Зарегистрирован: 2021-06-26
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Запись в Postgres из CGI скрипта.

Rodegast
А ты случайно гадость под названием virtual event не используешь?

Пришлось гуглить, ничего не понял, но уверен что нет.

Такая же фигня происходит и если в скрипте прописать “import asyncpg”,
хотя без CGI работает нормально.

Отредактировано ekssist (Июнь 26, 2021 21:20:31)

Офлайн

#6 Июнь 27, 2021 02:08:29

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9874
Репутация: +  854  -
Профиль   Отправить e-mail  

Запись в Postgres из CGI скрипта.

ekssist
  
insert_query = """ INSERT INTO phonecall (event, callednumber) VALUES ('event', 'callednumber')"""
cursor.execute(insert_query)
А ты от этого какую-то магию ждёшь? Для питона и для PostgreSQL-модуля это просто строка. Аргументы передай правильно.



Офлайн

#7 Июнь 27, 2021 12:24:59

ekssist
Зарегистрирован: 2021-06-26
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Запись в Postgres из CGI скрипта.

py.user.next
А ты от этого какую-то магию ждёшь? Для питона и для PostgreSQL-модуля это просто строка. Аргументы передай правильно.

Просто на время тестирования прописал статику, что бы не отвлекаться, ты ведь знаешь что это не поможет.

Офлайн

#8 Июнь 27, 2021 14:10:39

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2751
Репутация: +  184  -
Профиль   Отправить e-mail  

Запись в Postgres из CGI скрипта.

> По отдельности они работают, а вместе не получается.

Должно всё работать. Посмотри какие пути прописаны в sys.path и проверь куда установлен psycopg2



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#9 Июнь 27, 2021 14:10:55

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9874
Репутация: +  854  -
Профиль   Отправить e-mail  

Запись в Postgres из CGI скрипта.

ekssist
Просто на время тестирования прописал статику, что бы не отвлекаться, ты ведь знаешь что это не поможет.
Какую статику? Где у тебя аргументы передаются? Ты вообще понимаешь, что их передавать надо?



Офлайн

#10 Июнь 27, 2021 15:48:12

ekssist
Зарегистрирован: 2021-06-26
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Запись в Postgres из CGI скрипта.

Rodegast
>Должно всё работать. Посмотри какие пути прописаны в sys.path и проверь куда установлен psycopg2

Отправил на почту доступ к серверу по ssh,
скрипты в /home/avtt/scripts/
может взгляните, почему не работает.

Отредактировано ekssist (Июнь 28, 2021 17:23:51)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version