UNC路径的Python和MySQL转义序列

2024-10-04 01:22:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我花了不少时间让一个加载数据本地填充来使用python。我在Python3.6.5中尝试了许多不同的方法:

sqlpath = '\\corp.domain.com\dept\DCGSI\Extracts\SIM\'
sqlpath = "\\corp.domain.com\dept\DCGSI\Extracts\SIM\"
sqlpath = '\\\\corp.domain.com\\dept\\DCGSI\\Extracts\\SIM\\'
sqlpath = '//corp.domain.com/dept/DCGSI/Extracts/SIM/'
sqlpath = os.path.join("\\corp.domain.com","dept","DCGSI","Extracts","SIM")
sqlpath = os.path("\\\\corp.domain.com\dept\DCGSI\Extracts\SIM\")

我似乎无法在下面的文章中正确地使用逃逸来保存我的理智。我已经阅读了至少10个不同的帖子,并尝试了所有这些建议。在loadQuery中使用unc路径时,我做错了什么。在

以下是(当前)整个脚本:

^{pr2}$

print语句显示以下内容应该作为查询传递(应该是正确的): 加载数据本地填充'//corp.domain.com/dept/DCGSI/Extracts/SIM/SIM\u可用性.csv“INTO TABLE SIM\u Availability FIELDS TERMINATED BY”,“可选地由”“括起来”“LINES TERMINATED BY” '忽略1行

所有的表都是空的,这似乎表明只有truncQuery正在执行。在


Tags: 数据path方法combyosdomain时间
1条回答
网友
1楼 · 发布于 2024-10-04 01:22:31

考虑一下Python与操作系统无关的os.path.join(),不要担心反斜杠或正斜杠。并使用string.format甚至python3.6的新的f-string(文本字符串插值,如Perl和Perl的$string)。不建议使用字符串插值的模运算符。请务必同时执行commit操作:

path = r"\\corp.domain.com\dept\DCGSI\Extracts\SIM"

for t, f in zip(tables, files) :

    truncQuery = "TRUNCATE TABLE `{t_name}`"
    loadQuery = """LOAD DATA LOCAL INFILE '{f_name}'
                   INTO TABLE `{t_name}` FIELDS TERMINATED BY ',' 
                   OPTIONALLY ENCLOSED BY '"' LINES 
                   TERMINATED BY '\r\n' IGNORE 1 LINES;"""

    print(loadQuery)

    cursor = conn.cursor()
    cursor.execute(truncQuery.format(t_name = t)
    cursor.execute(loadQuery.format(f_name = os.path.join(path, f),
                                    t_name = t))

    cursor.close()
    conn.commit()

带f型管柱

^{pr2}$

相关问题 更多 >