【问题标题】:How can I pass configuration variable values into the pyodbc connect command?如何将配置变量值传递到 pyodbc connect 命令?
【发布时间】:2012-04-10 07:43:32
【问题描述】:

我有一个 .ini(配置文件),其中我提到了服务器名称、数据库名称、用户名和密码,我可以使用它们将我的应用程序连接到 MSSQL

self.db = pyodbc.connect(
    'driver={SQL Server};server=homeserver;database=testdb;uid=home;pwd=1234')`

上面提到的connect语句对应的数据现在在config.ini中

self.configwrite = ConfigParser.RawConfigParser()
configread = SafeConfigParser()
configread.read('config.ini')

driver = configread.get('DataBase Settings','Driver')
server = str(configread.get('DataBase Settings','Server'))
db = str(configread.get('DataBase Settings','Database'))
user = str(configread.get('DataBase Settings','Username'))
password = str(configread.get('DataBase Settings','Password'))'

如何在 pyodbc connect 语句中传递这些变量?

我试过了:

self.db = pyodbc.connect('driver={Driver};server=server;database=db;uid=user;pwd=password')

但是我遇到了一个错误。

【问题讨论】:

  • 为了在 Python 中的字符串中添加变量,您需要在字符串前面加上“f”。我猜这就是为什么它们被称为 f-strings 的原因。 self.db = pyodbc.connect(f'driver={driver};server={server};database={db};uid={user};pwd={password}')

标签: python python-2.7 pyodbc pythoncard


【解决方案1】:

connect 函数的其他选项:

# using keywords for SQL Server authentication
self.db = pyodbc.connect(driver=driver, server=server, database=db,
                         user=user, password=password)

# using keywords for Windows authentication
self.db = pyodbc.connect(driver=driver, server=server, database=db,
                         trusted_connection='yes')    

【讨论】:

    【解决方案2】:
    self.db = pyodbc.connect('driver={%s};server=%s;database=%s;uid=%s;pwd=%s' % ( driver, server, db, user, password ) )
    

    %s 用于将变量包含到字符串中

    变量在%之后按照它们的顺序放入字符串中

    【讨论】:

      【解决方案3】:

      Mixing strings and input variable in sql connection string using pyodbc library - Python 受到这个答案的启发

      `conn=pyodbc.connect('Driver={SQL Server};'
                          'Server='+servername+';'
                          'Database=master;'
                          'UID=sa;'
                          'PWD='+pasword+';'
                          )`
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-05-23
        • 2014-01-05
        • 1970-01-01
        • 2018-08-15
        • 2013-11-18
        • 2012-11-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多