Foros Python

Versión completa: Insertar datos en mysql remoto
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
He hecho mil pruebas , en local todo correcto , necesito grabar unos datos en el servidor remoto y no hay manera de conectar . 

Traceback (most recent call last):
  File "C:\Python27\Proyectos\Mysql.py", line 31, in <module>
    p=run_query("SELECT * FROM fran.Lector")
  File "C:\Python27\Proyectos\Mysql.py", line 15, in run_query
    conn = MySQLdb.connect(*datos) # Conectar a la base de datos
  File "C:\Python27\lib\site-packages\MySQLdb\__init__.py", line 81, in Connect
    return Connection(*args, **kwargs)
  File "C:\Python27\lib\site-packages\MySQLdb\connections.py", line 187, in __init__
    super(Connection, self).__init__(*args, **kwargs2)
OperationalError: (1045, "Access denied for user 'root'@'185.147.18.73' (using password: YES)")

Si desde mi ordenador accedo a myphp con los mismos datos tengo acceso .
Me gustaría ver la tupla o lista datos que tienes en tu código. No los datos en sí sino más bien la estructura, por ejemplo: (host, user, password, ...).

¿Chequeaste que coincida con los argumentos que espera la función connect? De hecho se recomienda que se especifique el nombre de los argumentos.
# -*- coding: cp1252 -*-

import MySQLdb


DB_HOST = 'hostremoto'
DB_USER = 'usuario'
DB_PASS = 'pass'
DB_NAME = 'basededatos'

def run_query(query=''):
   
       datos = [DB_HOST, DB_USER, DB_PASS, DB_NAME]

       conn = MySQLdb.connect(*datos) # Conectar a la base de datos
       cursor = conn.cursor()         # Crear un cursor
       cursor.execute(query)          # Ejecutar una consulta

       if query.upper().startswith('SELECT'):
            data = cursor.fetchall()   # Traer los resultados de un select
       else:
            conn.commit()              # Hacer efectiva la escritura de datos
            data = None

       cursor.close()                 # Cerrar el cursor
       conn.close()                   # Cerrar la conexión

       return data

if __name__ == '__main__':
   p=run_query()

Este es el codigo , en mysql en mi pc conecta bien
He estado buscando informacion y parece ser que mysql por defecto no acepta conexiones remotas , tendre que pedir al proveedor que me permita conectar remotamente.

Me han dicho que tenemos un usuario para hacer eso , pero que hay que conectar por un puerto determinado , como le indico al conector python el puerto?
Ya he conseguido conectar , pero no consigo insertar datos .
¿Qué problema tienes al insertar datos? De todas forma tu función es muy poco eficiente pues abre y cierra una conexión por cada consulta. Deberías realizar la conexión al comienzo de tu programa y cerrarla al final.