mysql.connector.errors.ProgrammingError:1146(42S02):表'd1.tblname'不存在

时间:2019-04-09 10:52:29

标签: python mysql database mariadb pymsql

现在,我正在做一个项目,我必须在RPi上使用 mysql.connector 为python创建SQL数据库。 该项目的目的是从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()

运行上述程序时,出现以下错误

   Connecting SQL database using host = **** ,username = **** ,database = **** ,port = ****.


CM_lad_19Dez2018_14Uhr38
Traceback (most recent call last):
  File "25createtable.py", line 39, in <module>
    myCursor.execute(loadData)
  File "/usr/local/lib/python2.7/dist-packages/mysql/connector/cursor.py", line 491, in execute
    self._handle_result(self._connection.cmd_query(stmt))
  File "/usr/local/lib/python2.7/dist-packages/mysql/connector/connection.py", line 683, in cmd_query
    statement))
  File "/usr/local/lib/python2.7/dist-packages/mysql/connector/connection.py", line 601, in _handle_result
    raise errors.get_exception(packet)
mysql.connector.errors.ProgrammingError: 1146 (42S02): Table 'd1.tblname' doesn't exist

我的程序正在根据我的要求创建表,但它没有将数据加载到其中,并退出了带有上述错误的代码。

我需要对loadData= "LOAD DATA LOCAL INFILE 'finalpath' INTO TABLE **tblname** COLUMNS TERMINATED BY '\t' "进行调整,使其读取数据库中的对应表 据我所知,错误在于 tblname 变量。有什么想法吗?

0 个答案:

没有答案