python将txt文件导入数据库中

1.将txt文件导入数据库中,文件中是包含管道的,例如
①unlocking device | 1102364
②your security software found malicious content in the email message | 1095329
③transfer protection mac | 1110528 | 1060983

第一步:读文件
第二步:连接数据库
第三步:将读到的内容进行处理之后插入到数据库
第四步:关闭数据库

附我执行正确的代码:

import pymysql
import json
def import_data(fn):
    # 读txt文件
    f = open(fn, 'r')
    m = f.readlines()

# 连接数据库,获取游标
con = pymysql.connect(host='10.206.131.83', port=3306, user='skyaiduser', password='skyaid8.6', db='skyaid_webservice', charset='utf8')
cur = con.cursor()

# 执行sql语句
for line in m:

    A = line.strip('\n').split('|')
    # print(A)  # 这是未去掉空格的列表

    A2 = []
    for a in A:
        b = a.strip(' ')
        A2.append(b)
    # print(A2)  # 这是去掉空格之后的列表

    s = {'kbids': A2[1:]}  # 转成字典
    # print(s)

    a_json = json.dumps(s)
    # print(a_json)  # 转成json字符串

    sql = "insert into support_search_keyword_pattern(keyword,kbid_array,create_date)values(\"%s\",'%s',now())"
    sql1 = sql % (A2[0], a_json)
    # print(sql1)

    cur.execute(sql1)
    con.commit()

cur.close()
con.close()

if __name__=='__main__':
    import_data('pattern_dataset.txt')

在此之前遇到的问题:①连接数据库时(最好以赋值形式)
②Sql语句执行完成能之后记得提交
③sql语句insert into …values…包含格式化字符串两个%s,此时要替换掉这两个%s,此时到value这整 个sql语句已经结束,所以在value之后加引号,不要把格式化字符串也加在引号里”
sql = “insert into …values(\“%s\”,’%s’,now()) ”
sql1=sql%(a2[0],a_json),注意这块。
格式化字符串还可以用另外的方法:
①format
sql = “insert into …values(\”{}\”,’{}’,now()) sql = sql.format (a2[0],a_json)

你可能感兴趣的:(python将txt文件导入数据库中)