python连接SQL Server并读取数据,结巴分词处理后写入SQL Server

前一阵子在虚拟机上整MySQL整的有点崩溃,明明已经在入站规则里开放了3306端口和映射端口还是无法外网访问。还好需求从MySQL变成了SQL Server,于是又开始上手SQL Sever。但是SQL Server也不是那么好操作的,新手第一次操作肯定要吃点苦。

本机操作半个下午总算完成了任务:读取SQL Server里的数据,结巴分词之后存入新的表中

1.首先是pymssql的安装,该库可以使python代码连接SQL Server,遇事不决pip install

pip install pymssql

2.接着是连接到指定数据库

server = 'xxx.xxx.xxx.xxx:xxxx'
user = 'xsf'
password = 'xxxxxx'
#这里注意端口和ip地址连接的格式,ssms里是逗号,这里是冒号

conn = pymssql.connect(server, user, password, 'XSF')
cursor = conn.cursor()

3.连接以后,读出指定数据库里的值

cursor.execute("select * from book;")
id_list = []
cut_list = []#读取所有的id和booktitle,并存入列表内
while 1:
    res = cursor.fetchone()
    if res is None:
        break
    id = res[0]
    book_name = res[2]
    words = psg.cut(book_name)
    word_list = []
    
    for word in words:
        if word.flag != 'm' and word.flag != 'x' and word.flag != 'c' and word.flag != 'e' and len(
                word.word) > 1 and word.flag != 'o':
            word_list.append(word.word)
    #处理掉所有的虚词和量词,并去除长度过短的词语,提高分词的准确度
    id_list.append(id)
    cut_list.append(word_list)
    print(id)
print('ok')
#68万的数据量实在太长(68万),读取完毕要很长时间(45分钟),print一下告诉自己已经读取完了(因为水平太差,不太理解游标的操作,没能做到边循环读入数据边写入SQL server,希望有经验的大佬告知一下)

4.进行分词处理,并写入SQL server数据库。写入操作是最大的坑

n = 0
for i in range(len(cut_list)):
    id = id_list[i]
    cut = cut_list[i]
    try:
        cursor.execute(
            "INSERT INTO XSF.dbo.bookTitleKeyword(bookId, titleKeyword) VALUES ('%d', '%s')" % (id, cut))
            #sql语句千万不要写成
            #"INSERT INTO XSF.dbo.bookTitleKeyword(bookId, titleKeyword) VALUES ('%d,%s')" % (id, cut))
           
        conn.commit()
        print('正在存序号为'+str(id)+'的书')
    except :
        print('异常发生,序号为'+str(id))
        n = n+1
        pass
print('结束了,异常数量为'+str(n))
cursor.close()
conn.commit()
conn.close()

光是一个单引号的问题就困惑了我一个下午,没有室友的指导我肯定完成不了任务。事实证明编程是一个艰难的过程,需要积累和朋友们的帮助

你可能感兴趣的:(无)