es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

No se puede abrir la base de datos con el inicio de sesión solicitado.

import pyodbc


class MetaSingleton(type):
    _instances = {}

    def __call__(cls, *args, **kwargs):
        if cls not in cls._instances:
            cls._instances[cls] = super(
                MetaSingleton, cls).__call__(*args, **kwargs)
        return cls._instances[cls]


class Database(metaclass=MetaSingleton):
    connection = None

    def connect(self):
        if self.connection is None:
            self.connection = pyodbc.connect(
                'DRIVER={SQL Server};Server=LAPTOP-V5I3M0RK\SQLEXPRESS;Database=stock;UID=ABC_login;PWD=abc;Trusted_connection=yes;')

            # self.connection.autocommit = False
            self.cursorobj = self.connection.cursor()
        return self.cursorobj

Este es el código que he estado utilizando para conectar a mi base de datos. Creo que hay un problema en la cadena de conexión después de muchos intentos sin éxito para encontrar el problema.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Según el mensaje de error proporcionado, parece que hay un problema con el formato de la cadena de conexión. Una posible causa podría ser que las barras diagonales invertidas en el nombre del servidor se estén interpretando como caracteres de escape, y necesitan ser escapadas.

    Para solucionar este problema, el nombre del servidor se puede encerrar entre comillas, o las barras diagonales invertidas se pueden duplicar para indicar que deben ser tratadas como caracteres literales. Por ejemplo:

    'DRIVER={SQL Server};Server=\'LAPTOP-V5I3M0RK\\SQLEXPRESS\';Database=stock;UID=ABC_login;PWD=abc;Trusted_connection=yes;'
    

    Alternativamente:

    'DRIVER={SQL Server};Server=LAPTOP-V5I3M0RK\\SQLEXPRESS;Database=stock;UID=ABC_login;PWD=abc;Trusted_connection=yes;'
    

    Una vez corregida la cadena de conexión, el código debería poder establecer una conexión con la base de datos.

Comments are closed.