Jupyter notebook中的多行字符串

6

如何将以下代码中的 sql 字符串 x 分成几行 - 这是在一个 Jupyter 笔记本中进行的操作?

import pandas as pd
import pyodbc as p

def s(sqlString):
    cnxn = p.connect(driver='{SQL Server}', server='SERVERNAME', database='OURDBNAME', uid='myLOGIN', pwd='myPWD')
    df = pd.read_sql(sqlString, cnxn)
    return df


x = "SELECT * FROM OURDBNAME.dbo.vw_DimFoo"
df = s(x)

理想情况下,我希望不必处理大量的字符串连接操作...不确定是否可行。

2个回答

21

使用Python的三重引号表示法定义多行字符串:

x = """\
Select * 
FROM OURDBNAME.dbo.vw_DimFoo
"""

print(x)

导致结果

Select * 
FROM OURDBNAME.dbo.vw_DimFoo

(反斜杠“\”在开头会抑制换行符。要使用多行定义单行字符串,请在每行之后添加反斜杠。)

(反斜杠“\”在开头会抑制换行符。要使用多行定义单行字符串,请在每行之后添加反斜杠。)


12
使用圆括号可以让你将字符串分成多行。如果你不使用运算符,Python 将简单地连接它们。
所以快速示例:
x = (
  'Select * '
  'FROM OURDBNAME.dbo.vw_DimFoo '
  'WHERE <foo> '
)

print(x)

打印

Select * FROM OURDBNAME.dbo.vw_DimFoo WHERE <foo> 

谢谢@cel - 当我尝试在jupyter中使用sql魔法单元格时,会出现一些奇怪的错误:http://stackoverflow.com/questions/37433274/pyodbc-working-ok-but-not-via-sql-magic-cell - whytheq

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接