我试图将trans_dt加载到cmdels表中。但是会引发语法错误。如何将局部变量添加到表中。本地变量名称为newDate

import mysql.connector
config = {
'user':'root',
'password':'password',
'host':'127.0.0.1',
'database':'nse'
}
conn= mysql.connector.connect(**config)
c=conn.cursor()
def insertRows(fileName,c):
    delimiter=r','
    dateString=r'%d-%b-%Y'
    file=fileName.split("/")[-1]

    if file.startswith("MTO"):
        newDate=new_Date(file)

        c.execute("Load data local infile %s into table cmdels fields terminated by %s
        ignore 4 lines(recno,srno,symbol,series,qtytrd,qtydel,qtyper,trans_dt)
        SET trans_dt=(@trans_dt,%s)", (fileName, delimiter,newDate))

localExtractFilePath="/Users/data/nse"

import os

def new_Date(s):
return s[4:-4]

for file in os.listdir(localExtractFilePath):
    if file.endswith(".DAT"):
        insertRows(localExtractFilePath+"/"+file,c)
        print "Loaded file "+file+" into database"
       conn.commit()
c.close()
conn.close()

最佳答案

单引号字符串文字不能跨越换行符。您可以使用三引号引起来的字符串("""Load data..."""),但最终会在字符串中产生多余的空格和换行符,这可能会导致它们自己的问题。一个不错的选择是在每行的末尾加上引号,然后让python在编译步骤中将它们连接起来

   c.execute("Load data local infile %s into table cmdels fields terminated by %s"
    " ignore 4 lines(recno,srno,symbol,series,qtytrd,qtydel,qtyper,trans_dt)"
    " SET trans_dt=(@trans_dt,%s)", (fileName, delimiter,newDate))

关于mysql - 使用python无法将CSV文件加载到MySql中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50309478/

10-11 08:07