使用python sqlite3的fetchall无法显示结果?

1.问题描述:使用python for语句循环插入数据到数据库(sqlite3),然后使用select * from tabname 然后用fetchall得到所有结果,结果为空,但是将数据表放到linux下用sqlite3打开然后.du就能看的插入的所有数据,望大神讲解~

代码:

--coding:gb2312--

import xlrd
import os
import sys
global strall
import sqlite3
import pprint
strall = None
def get_xlsx():

stdi,stdo,stde=sys.stdin,sys.stdout,sys.stderr
reload(sys)
sys.stdin,sys.stdout,sys.stderr=stdi,stdo,stde
sys.setdefaultencoding('gb2312')
xlrd.Book.encoding = "gb2312"
xlsx = xlrd.open_workbook(r'f:\20170809_mailbox.xlsx')
print xlsx.sheet_names()
print type(xlsx.sheet_names())
sheet = xlsx.sheet_by_name('Sheet1')
print sheet.nrows,sheet.ncols
row_name_data = sheet.row_values(0)
list1 = []
user_data = []
for numc in range(1,int(sheet.nrows)):
    data = sheet.row_values(numc)
    temp_data = []
    for temp in range(len(data)):
        data_to_unicode = unicode(data[temp])
        temp_data.append(data_to_unicode)
    user_data.append(temp_data)
conn = sqlite3.connect(r'f:\sec2.db')
cur = conn.cursor()
conn.execute('''
                    CREATE TABLE user_info(
                    user_id      INTEGER    DEFAULT 0 PRIMARY KEY ,
                    user_number  INTEGER    DEFAULT 0 UNIQUE,
                    user_name    VARCHAR(15),   
                    user_type    VARCHAR(15),
                    user_system  VARCHAR(15),
                    user_group   VARCHAR(30),
                    first_group  VARCHAR(30),
                    second_group VARCHAR(30),
                    user_company VARCHAR(30),
                    work_mail_vc VARCHAR(30),
                    work_mail_vcc  VARCHAR(30),
                    work_mail_v  VARCHAR(30),
                    work_mail_lds  VARCHAR(30),
                    work_mail_hzhz  VARCHAR(30),
                    work_mail_un  VARCHAR(30)
                    )
                    ''')

query = 'INSERT INTO user_info VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)'
for q in range(len(user_data)):
    print '#########'
    #print user_data[q][2]
    conn.execute(query,(user_data[q][0],user_data[q][1],user_data[q][2],user_data[q][3],user_data[q][4],user_data[q][5],user_data[q][6],user_data[q][7],user_data[q][8],user_data[q][9],user_data[q][10],user_data[q][11],user_data[q][12],user_data[q][13],user_data[q][14]))
    conn.commit()
conn.execute('SELECT * FROM user_info')
#cur.execute("SELECT tbl_name FROM sqlite_master WHERE type='table'")
result = cur.fetchall()
pprint.pprint(result)
conn.close()

if name == '__main__':

get_xlsx()
阅读 5.8k
2 个回答

conn是用来获取cur的,
cur才算excute的执行者,
你用conn.excute.....

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题