pymysql连接数据库,获取数据写入到txt,并从txt读取代码示例(涉及到中文)

def get_conn():
    try:
        conn = pymysql.connect(
            host = "***",
            port = ***,
            user = "***",
            password = "***",
            db = "***")
    except Exception as e:
            logger.warning(e)
    finally:
        return conn

def get_data_from_db(filename):
    conn = get_conn()
    sql_v = """
        select A,B,C
        from tablename
    """
    conn = get_conn()
    cur = conn.cursor()
    
    cur.execute(sql_v)
    result = cur.fetchall()
    #print(result[0])
    
    fp = open(filename, "wb+")
    count = 0
    for line in result:
        line = '\t'.join([ str(val) for val in line]) + "\n" #格式:A\tB\tC\n
        #print (line)
        fp.write(line.encode('utf8') ) #以utf8写入
        count += 1
    fp.close()
    cur.close()
    conn.close()
    print("写入完成,共写入%d条数据……" % count)

def process(filename):
    file = open(filename, "r", encoding='utf8')
    while 1:
        line = file.readline()
        print(line)
        if not line:
            break
        pass #process
        
if __name__ =='__main__':
    filename = './understand/0.txt' 
    get_data_from_db(filename)
    process(filename)

当时编码问题搞了会儿。以后就按这种写吧。
注意:
含有中文,往文件写的时候:
fp = open(filename, “wb+”)
fp.write(line.encode(‘utf8’) )编码了一下。
读的时候:

with open(filename, "r", encoding='utf8') as f:
	...

python3的系统编码为utf-8

有时间看下这个吧 https://blog.csdn.net/weixin_29343807/article/details/112240197

新增注意

对于大文件的处理,尤其比如GB级别的日志,遍历操作不要用readlines(),readlines()一次性读入文件中所有行,存储到一个list返回,很耗内存,建议用迭代器。

1、不建议使用下面的遍历方式:

不建议用!
for line in open(filename).readlines():
	process(line)

2、建议这样用:
使用文件迭代器遍历文件:

with open(filename) as f:
	for line in f:
		process(f)

或者流式输入:

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值