您的位置:首页 > 编程语言 > Python开发

python远程连接mysql服务器

2016-06-21 14:24 357 查看
使用python连接至远程的mysql服务器

python连接mysql使用MYSQLdb,首先要去下载对应版本的MYSQLdb,分享一个我自己下的

链接: http://pan.baidu.com/s/1o8OXU58 密码: 27jv

下载并安装后

第一步:

import MYSQLdb 看是否能成功导入。

第二步:

conn=MySQLdb.connect(

host='10.10.104.71',

port=3306,

user='root',

passwd='23455',

db='malware'

)

host后为ip地址,若用本地mysql则填为localhost

port 端口号,默认为3306

user 用户名

passwd 密码

db 你所要用的数据了名称

第三步:

cur=conn.cursor()

我们对数据库的常用操作都同个这个cursor对象来进行操作

通过cur.execute()来执行语句;这里操作不在概述。

写个我在用的时候出现的问题:

在用python将数据插入到表中时,会遇到格式化插入如下:

cur.execute(
"INSERT INTO person(name,age,type,time,time2,setType,appearanceCount)"
    "VALUES ('%s',%d,'%s','%s','%s','%s',%d)"%(name,age,type,time,time2,setType,appearanceCount)
)

这里的name,type等等都是字符串类型的变量,age是int类型变量,但是再插入时若是直接 用%s,就会报错,加上引号就没问题,并且只有字符串类型出现这种

问题,没查到是为什么。

另外操作远程数据库需要远程数据库对本地进行授权:

若没有授权会出现以下提示Host 'xxxxxx' is not allowed to connect to this MySQL server

1,在windows下运行输入mstsc,进行远程登录

2,远程登录后,cd到mysql的bin目录,输入mysql -u root -p 输入密码进行登录

3,创建远程登陆用户并授权

grant all PRIVILEGES on test_db.* to root@'192.168.1.101' identified
by '23455';

all PRIVILEGES 表示赋予所有的权限给指定用户,这里也可以替换为赋予某一具体的权限,例如select,insert,update,delete,create,drop 等,具体权限间用“,”半角逗号分隔。

test_db.* 表示上面的权限是针对于哪个表的,test_db指的是数据库,后面的 * 表示对于所有的表,由此可以推理出:对于全部数据库的全部表授权为“*.*”,对于某一数据库的全部表授权为“数据库名.*”,对于某一数据库的某一表授权为“数据库名.表名”。

root 表示你要给哪个用户授权,这个用户可以是存在的用户,也可以是不存在的用户。

192.168.1.101 表示允许远程连接的 IP 地址,也就是你本地的ip地址。如果想不限制链接的 IP 则设置为“%”即可。

123456 为用户的密码。

4,flush privileges;

这样就可以操作成功了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: