Использование Python не удалось загрузить файл CSV в MySql - PullRequest
0 голосов
/ 12 мая 2018

Я пытался загрузить 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()

1 Ответ

0 голосов
/ 12 мая 2018

Строковые литералы, заключенные в одинарные кавычки, не могут занимать символы новой строки. Вы можете использовать строки в тройных кавычках ("""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))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...