Хостинг. Не работает запрос к базе данных в скрипте на python3!

ramario
3 года
0

Есть скрипт:
#!/usr/bin/python3
import pymysql.cursors

print("Content-Type: text/html\n\n")
msg = "Hello, World!"
print("""%s""" % msg)

db = pymysql.connect(host='host.mysql.tools',
user='host_user',
password='12345',
db='host_bd')
cursor = db.cursor()
cursor.execute("SELECT VERSION()")
data = cursor.fetchone()
print ("Database version : %s " % data)
db.close()

При вызове файла не выполняется код после строки print("""%s""" % msg).
В чём может быть проблема???

toxi
3 года
0

Должно работать: https://repl.it/repls/AggravatingStarryScale (Ваш код). Нужно немного подождать перед тем, как скрипт выведет ошибку о продключении к БД.

ramario
3 года
0

Я и так знаю что код рабочий. Но при вызове www.mysite.com/skript/skript.py выводится только "Hello, World!", но не выводится "Database version:" .Даже нет ошибки когда неправильно указаны параметры подключения к базе данных.
Код:
db = pymysql.connect(host='host.mysql.tools',
user='host_user',
password='12345',
db='host_bd')
cursor = db.cursor()
cursor.execute("SELECT VERSION()")
data = cursor.fetchone()
print ("Database version : %s " % data)
db.close()

на сервере, походу, вообще не выполняется!!!

KarlovA
3 года
0

Проверил работу скрипта у себя и проблем не обнаружил, скрипт рабочий. На скриншоте сам скрипт и результат его выполнения — i.imgur.com/gPfjRdD.png
Возможно, стоит перепроверить параметры подключения к базе данных, указанные в скрипте. К примеру, если пароль указан неверно, скрипт выведет только «Hello, World!».

ramario
3 года
0

Если я скрипт запускаю в PyCharm, IDLE или здесь repl.it/repls/AggravatingStarryScale - всё работает, а на сервере не хочет.
Что на сервере (возможно настройки) может мешать скрипту подключаться к БД?????

alexandrpaliy
3 года
4

В Вашем случае pymysql.connect() не работала из-за того, что на сервере была установлена слишком старая версия pymysql - 0.6.2

Возникала ошибка

TypeError: __init__() got an unexpected keyword argument 'password'

потому что в версии 0.6.2 этот параметр назывался 'passwd'

Для наглядности, разница в списке параметров, которые ожидала видеть connect():
pymysql 0.6.2 - github.com/PyMySQL/PyMySQL/blob/92114cf35074abe4335c34d06a9b75bc6dcccad6/pymysql/connections.py (строка 500)
pymysql 0.8.0 - github.com/PyMySQL/PyMySQL/blob/0305541132b134047eb4ba70fc9acbc9be603d05/pymysql/connections.py (строка 569)

Перенесли аккаунт на сервер с версией pymysql 0.8.0, теперь ошибка проявляться не должна.

Тема закрыта.