python连接SQL Server并读取数据,结巴分词处理后写入SQL Server
前一阵子在虚拟机上整MySQL整的有点崩溃,明明已经在入站规则里开放了3306端口和映射端口还是无法外网访问。还好需求从MySQL变成了SQL Server,于是又开始上手SQL Sever。但是SQL Server也不是那么好操作的,新手第一次操作肯定要吃点苦。本机操作半个下午总算完成了任务:读取SQL Server里的数据,结巴分词之后存入新的表中1.首先是pymssql的安装,该库可以使..
·
前一阵子在虚拟机上整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()
光是一个单引号的问题就困惑了我一个下午,没有室友的指导我肯定完成不了任务。事实证明编程是一个艰难的过程,需要积累和朋友们的帮助
更多推荐
所有评论(0)