现在我正在做一个项目,在这个项目中,我必须使用mysql.connector用于RPi上的python。
这个项目的目的是从raspberry pi目录中的文本文件创建SQL数据库。我的动机是根据文本文件的名称在数据库中创建表,然后将文本文件中的数据插入相应的表中。在
我已经编写了一个python脚本,它成功地连接到我的数据库并创建了我所需的表,但是我在尝试将数据加载到创建的表中时遇到了一些问题。在
我的代码看起来像#!/usr/bin/python
hostname = 'localHost'
username = 'userName'
password = 'password'
database = 'databseName'
portname = 'portNumber'
from mysql.connector.constants import ClientFlag
import os,csv,string,sys
import mysql.connector
print('\nConnecting SQL database using host = '+hostname+' ,username = '+username+' ,database = '+database+' ,port = '+portname+'.')
print('\n')
myConnection = mysql.connector.connect(user=username, passwd=password,host=hostname,port=portname,db=database,client_flags=[ClientFlag.LOCAL_FILES])
myCursor =myConnection.cursor()
rootDir = '/mnt/Wdrive/pc70/SK/E07'
for dirName, subdirList, fileList in os.walk(rootDir):
for fname in fileList:
tblname = os.path.basename(fname).split('.')[0]
#print('%s' %(tblname))
print(tblname)
sql= 'CREATE TABLE %s (Datum varchar(12), Uhrzeit varchar(13), UpsACT_V varchar(6), UpsPRE_V varchar(6), IpsACT_A varchar(6), IpsPRE_A varchar(6), PpsACT_W varchar(6), PpsPRE_W varchar(10)) % tblname
myCursor.execute(sql)
myConnection.commit()
finalpath= os.path.join(rootDir,fname)
print(finalpath)
loadData= "LOAD DATA LOCAL INFILE 'finalpath' INTO TABLE tblname COLUMNS TERMINATED BY '\t' "
#loadData= "LOAD DATA LOCAL INFILE join INTO TABLE tblname COLUMNS TERMINATED BY '\t' IGNORE 11 lines"
myCursor.execute(loadData)
myConnection.commit()
当我运行上述程序时,我得到以下错误
^{pr2}$
我的程序正在按照我的要求创建表,但它没有将数据加载到其中,并以上述错误退出代码。在
{1>我需要一个数据库来修改它
据我所知,错误在于tblname变量。有什么想法吗?在