Pycharm3.5操作mysql


python3.5 操作mysql的模块不是MySQLdb了,而是pymysql

下载安装pymysql

可以使用浏览器或者迅雷下载,或者干脆再linux上,wget下载然后再传到windows上

https://pypi.python.org/packages/source/P/PyMySQL3/PyMySQL3-0.5.tar.gz

解压之后

 

运行cmd,切换到PyMySQL3-0.5目录,执行如下命令安装此插件

python setup.py install

 

安装完毕,重新打开pycharm软件

把sql语句放在一个文件中

 

然后写一个python脚本连接数据库,执行上面语句

其中mysql库名为dbuser,连接此测试库的用户名和密码都是dbuser,此表是从测试库上拖下来的,自己测试机器更新完没问题,再导入到测试库

逐行执行每条update语句

#Auther nmap
#coding=utf-8
import pymysql
conn = pymysql.connect(host="10.0.2.17",port=3306,user="dbuser",passwd="dbuser",db="dbuser",charset="utf8")
cur = conn.cursor()
f_sql=open('update','r',encoding='utf-8')
for line in f_sql:
    sql = line
    cur.execute(sql)

  

这次要更新的字段是c_nickname  它是昵称。

下面账号都是游戏的机器人账号,改成中文的话更加真实点

下图为更新完毕的效果,昵称这里默认是和c_numbercode一致,这里都改成中文的了

 

 

 之所以使用python去操作数据库,而不是直接在mysql命令行执行更新,是自己遇到一个一时无法解决的小问题。

在mysql命令行批量更新时,执行总是报错,而且即使成功的更新,插入之后也变成乱码了。

比如下面sql语句

update tab_user set c_nickname='汉芬菲'  where c_numbercode='50001970';
update tab_user set c_nickname='连世英'  where c_numbercode='50001971';
update tab_user set c_nickname='言心'  where c_numbercode like "50001972";
update tab_user set c_nickname='静逸'  where c_numbercode like "50001973";
update tab_user set c_nickname='hehe'  where c_numbercode='50001974';
update tab_user set c_nickname='厚孤晴'  where c_numbercode='50001975';
update tab_user set c_nickname='厚孤晴'  where c_numbercode='50001975';
update tab_user set c_nickname='初蝶'  where c_numbercode='50001976';
update tab_user set c_nickname='夏青'  where c_numbercode='50001977';
update tab_user set c_nickname='沃德'  where c_numbercode='50001978';
update tab_user set c_nickname='轩辕'  where c_numbercode='50001979';
update tab_user set c_nickname='痴梅'  where c_numbercode='50001980';
update tab_user set c_nickname='9527'  where c_numbercode='50001981';
update tab_user set c_nickname='莫忆枫'  where c_numbercode='50001982';
update tab_user set c_nickname='申屠'  where c_numbercode='50001983';
update tab_user set c_nickname='甄梦'  where c_numbercode='50001984';

  

 在mysql命令行执行更新时,如下

报错情况如下,总是提示语法错误。但是每条sql语句单独拿出来又能执行成功,而且不会乱码,奇怪

mysql> update tab_user set c_nickname='汉芬菲'  where c_numbercode='50001970';
update tab_user set c_nickname='连世英'  where c_numbercode='50001971';
update tab_user set c_nickname='言心'  where c_numbercode like "50001972";
update tab_user set c_nickname='静逸'  where c_numbercode like "50001973";
update tab_user set c_nickname='hehe'  where c_numbercode='50001974';
update tab_user set c_nickname='厚孤晴'  where c_numbercode='50001975';
update tab_user set c_nickname='厚孤晴'  where c_numbercode='50001975';
update tab_user set c_nickname='初蝶'  where c_numbercode='50001976';
update tab_user set c_nickname='夏青'  where c_numbercode='50001977';
update tab_user set c_nickname='沃德'  where c_numbercode='50001978';
update tab_user set c_nickname='轩辕'  where c_numbercode='50001979';
update tab_user set c_nickname='痴梅'  where c_numbercode='50001980';
update tab_user set c_nickname='9527'  where c_numbercode='50001981';
update tab_user set c_nickname='莫忆枫'  where c_numbercode='50001982';
update tab_user set c_nickname='申屠'  where c_numbercode='50001983';
update tab_user set c_nickname='甄梦'  where c_numbercode='50001984';
Database changed
Rows matched: 1  Changed: 0  Warnings: 0
1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '50001971'' at line 1
1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''瑷€蹇?  where c_numbercode like "50001972"' at line 1
1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''闈欓€?  where c_numbercode like "50001973"' at line 1
Database changed
Rows matched: 1  Changed: 0  Warnings: 0
1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '50001975'' at line 1
1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '50001975'' at line 1
Database changed
Rows matched: 1  Changed: 1  Warnings: 0
Database changed
Rows matched: 1  Changed: 1  Warnings: 0
Database changed
Rows matched: 1  Changed: 1  Warnings: 0
Database changed
Rows matched: 1  Changed: 1  Warnings: 0
1366 - Incorrect string value: '\xEE\x95\xAA' for column 'c_nickname' at row 1
Database changed
Rows matched: 1  Changed: 0  Warnings: 0
1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '50001982'' at line 1
Database changed
Rows matched: 1  Changed: 1  Warnings: 0
Database changed
Rows matched: 1  Changed: 1  Warnings: 0
mysql>   

 下面是通过Navicat工具执行更新时,数据库乱码的情况

 

最后采用python去操作数据库,一切正常

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM