我试图将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/