2017-04-26 131 views
1

我想将mysql数据导入使用python 3.x的.txt文件,但它看起来像我缺少的东西。期望是,数据应导入到表格/列格式的文件。我尽我最大努力获得解决方案,但我没有得到我所需要的。如何使用python 3.5将mysql数据导入到.txt文件?

下面是我的代码:

import pymysql.cursors 
import pymysql 
import sys 
import os 

# Connect to the database 
connection = pymysql.connect(host='localhost', 
          user='root', 
          password="", 
          db='jmeterdb', 
          cursorclass=pymysql.cursors.DictCursor) 

try: 
    with connection.cursor() as cursor: 
     # Select all records 
     sql = "select * from emp" 
     cursor.execute(sql) 

    # connection is not autocommit by default. So you must commit to save 
    # your changes. 
    result = cursor.fetchall() 
    newfile = open("db-data.txt","a+") 
    for row in result: 
     newfile.writelines(row) 

    print(result) 
    newfile.close() 

finally: 
    connection.close() 

在终端蟒蛇显示我的数据时执行print(result)但在db-data.txt文件,它只显示列名。

预期结果:

Column_Name1 Column_Name2 Column_Name3 
data1  data2  data3 
data1  data2  data3 
+1

'writelines()'假定存在一个线的阵列,则必须使用'write(row +“\ n”)' –

+1

请参阅http://stackoverflow.com/questions/12377473/python-write-versus-writelines-and-concatenated-strings使用write而不是writelines。 –

+0

我刚刚通过使用下面的代码得到了表结构:'用于结果中的行: newfile.write(“\ t”.join(row))''但没有来自sql的数据。 –

回答

0

该代码可用于上述问题的产生预期的输出是如下:

import pymysql.cursors 
import pymysql 
import sys 
import os 

# Open database connection 
connection = pymysql.connect(host='localhost', 
          user='root', 
          password="", 
          db='jmeterdb', 
          cursorclass=pymysql.cursors.DictCursor) 
# prepare a cursor object using cursor() method 
with connection.cursor() as cursor: 
# Prepare SQL query to select a record into the database. 
    try: 

     sql = "SELECT * FROM EMP order by ename asc" 
# Execute the SQL command 
     cursor.execute(sql) 
# Fetch all the rows in a list of lists. 
     results = cursor.fetchall() 
     # print(results) 
     if results: 
      newfile = open("db-data.txt","a+") 
      newfile.write('ename'+"\t"+'jobs'+"\t"+"salary"+"\t"+'comm'+"\t"+'manager'+"\t"+'hiredate'+"\t"+'deptno'+"\t"+'empno'+"\n") 

     for index in results: 
      ltr=[] 
      ltr.append(index['ename']) 
      ltr.append(index['job']) 
      ltr.append(index['sal']) 
      ltr.append(index['comm']) 
      ltr.append(index['mgr']) 
      ltr.append(index['hiredate']) 
      ltr.append(index['deptno']) 
      ltr.append(index['empno']) 
      lenltr=len(ltr) 
      for i in range(lenltr): 
       newfile.write('{}'.format(ltr[i])) 
       newfile.write("\t") 
       print(ltr[i]) 
      newfile.write("\n") 


# # Now print fetched result 
     #print("ename=%s,empno=%d,job=%d,hiredate=%d,comm=%s,sal=%d,deptno=%d,mgr=%d" %(ename, empno, job, hiredate, comm, sal, deptno, mgr)) 
     # print(index) 
    except: 
     print ("Error: unable to fecth data") 
# disconnect from server 
connection.close() 
newfile.close() 
相关问题