Quiero conectar a un servidor de base de datos PostgreSQL a través de Python para hacer algunos análisis de datos básicos. Esta base de datos requiere SSL (verificar-ca), junto con tres archivos (el que tengo):

  • Raíz del servidor de archivo de certificado
  • Archivo del certificado de cliente
  • Clave de cliente de archivo

No he sido capaz de encontrar un tutorial que describe cómo hacer esta conexión con Python.
Cualquier ayuda es muy apreciada.

  • psycopg2. Búsqueda en google.
  • Gracias. He. El problema es con el añadido de los requisitos de ssl. Yo no podía encontrar la sintaxis para que.
  • Opciones de SSL se describen a continuación: postgresql.org/docs/current/static/… usted puede pasar a cualquiera de estos a la connect método.
InformationsquelleAutor Alex | 2015-01-30

2 Comentarios

  1. 43

    Utilizar el psycopg2 módulo.

    Usted tendrá que utilizar las opciones de ssl en la cadena de conexión, o añadirlos como palabra clave argumentos:

    import psycopg2
    
    conn = psycopg2.connect(dbname='yourdb', user='dbuser', password='abcd1234', host='server', port='5432', sslmode='require')

    En este caso sslmode especifica que se requiere SSL.

    Para realizar el certificado de servidor de verificación puede establecer sslmode a verify-full o verify-ca. Es necesario proporcionar la ruta de acceso al certificado de servidor en sslrootcert. También se establece la sslcert y sslkey valores a su cliente el certificado y la clave respectivamente.

    Esto se explica en detalle en el PostgreSQL Las Cadenas de conexión de la documentación (véase también el Parámetro de Palabras Clave) y en Soporte SSL.

    • en django esto funciona si usted especificar algo como: ` ‘OPCIONES’: { ‘sslmode’: ‘verificar-completo’, ‘sslrootcert’: ‘/etc/pki/CA/certs/cabundle.pem’}` extra ‘opción’ a sus BASES de datos[‘default’] dict.
    • Tenga en cuenta que database está en desuso alias para dbname de acuerdo a la psycopg2 documentación.
    • gracias por decírmelo. He actualizado la respuesta en consecuencia.
    • Nota a los usuarios de MacOS y sqlalchemy, ejecutar pip install psycopg2-binary antes de ejecutar create_engine().
    • ¿Qué sucede si sslkey archivo está protegido por contraseña? Puede psycopg2 manejar la contraseña de cifrado de archivos de claves?
  2. 3

    Usted también puede usar un túnel ssh con paramiko y sshtunnel:

    import psycopg2
    import paramiko
    from sshtunnel import SSHTunnelForwarder
    
    mypkey = paramiko.RSAKey.from_private_key_file('/path/to/private/key')
    
    tunnel =  SSHTunnelForwarder(
            (host_ip, 22),
            ssh_username=username,
            ssh_pkey=mypkey,
            remote_bind_address=('localhost', psql_port))
    
    tunnel.start()
    conn = psycopg2.connect(dbname='gisdata', user=psql_username, password=psql_password, host='127.0.0.1', port=tunnel.local_bind_port)

Dejar respuesta

Please enter your comment!
Please enter your name here