正在尝试用Python格式化连接字符串-无法替换为变量
我试图用Python创建一个连接字符串——目标是有一个要访问的表/服务器列表,它将根据前面的列表进行迭代 我已经编写了查询(使用正在尝试用Python格式化连接字符串-无法替换为变量,python,python-3.x,Python,Python 3.x,我试图用Python创建一个连接字符串——目标是有一个要访问的表/服务器列表,它将根据前面的列表进行迭代 我已经编写了查询(使用“select*from”“”工作),但似乎无法使连接字符串正常工作。对“{SQL Server}”需要放在花括号中 server_name = "myservername" #this doesn't work: con_string = ('Driver={{SQL Server}};Server={server_name};Database={mydatabas
“select*from”“”
工作),但似乎无法使连接字符串正常工作。对“{SQL Server}”需要放在花括号中
server_name = "myservername"
#this doesn't work:
con_string = ('Driver={{SQL Server}};Server={server_name};Database={mydatabase};App=myappname;Trusted_Connection=yes')
这也不是
con_string = ('Driver={{SQL Server}};'
'Server={};'.format(server_name)
'Database=mydatabase;'
'App=myappname;' # It's not "application name"!
'Trusted_Connection=yes')
这也不是:
serverstring = 'Server={};'.format(server_name)
con_string = ('Driver={{SQL Server}};'
'{serverstring}'
'Database=mydatabase;'
'App=myappname;' # It's not "application name"!
'Trusted_Connection=yes')
非常感谢您的帮助。试试看。卷曲的括号被折叠起来(如上所述)以逃避它们自己。这就是你要找的吗 Python3.6引入了新的字符串格式化功能(f-strings),它使用变量替换。但是对于我们这些仍然使用3.5的人来说,这非常有效
con_string = ('Driver={{SQL Server}};'
'Server={svr};'
'Database={db};'
'App={app};'
'Trusted_Connection={tc}').format(svr='SERVER01',
db='MyDB',
app='MyApp',
tc='Yes')
以下是输出:
Driver={SQL Server};Server=SERVER01;Database=MyDB;App=MyApp;Trusted_Connection=Yes
要创建一个函数,首先需要f。例如,你的第三个例子应该是:
serverstring = 'Server={};'.format(server_name)
con_string = ('Driver={{SQL Server}};'
f'{serverstring}'
'Database=mydatabase;'
'App=myappname;' # It's not "application name"!
'Trusted_Connection=yes')
要创建格式字符串,您需要在开始时使用
f
(因此在第三个示例中,您应该使用f'{serverstring}'
)。@rassar awesome!如果你想把它作为一个答案,我会把它标记为解决方案。谢谢,那看起来也行!谢谢这是一种很好的技术。请注意,f字符串仅在Python 3.6+中可用。