python s.connect连接mysql 时,connect 出现错误,怎么解决

python 连接mysql 时,connect 出现错误,怎么解决_百度知道
python 连接mysql 时,connect 出现错误,怎么解决
提问者采纳
问题描述不清!请详细描述错误
来自团队:
其他类似问题
为您推荐:
python的相关知识
其他1条回答
或许是mysql驱动包没有improt呢,报错是什么啊首先?或者是mysql挂了
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁Python连接MySQL中有关中文乱码的解决问题
一、MySQLdb中文乱码问题的解决(Python)
写了一个简单的脚本,将我的数据整理到Mysql中去。遇到了乱码问题,改了一下,很快就解决了。连接mysql时要注意注明是utf-8字符集,所有中文都要是utf-8,如果有GBK也要先转换成utf-8,把握这个原则,中文乱码问题是不会有的。
转换脚本如下:
#-*- coding: utf-8 -*-,
#coding = utf-8
import MySQLdb,os
def wgdata2DB():
"Convert weg game data to mysql"
db=MySQLdb.connect(host='localhost',&&&&&
#连接数据库
&&&&&&&&&&&&&&&&&&&&&
user='root',
&&&&&&&&&&&&&&&&&&&&&
passwd='123456',
&&&&&&&&&&&&&&&&&&&&&
db='testdb',
&&&&&&&&&&&&&&&&&&&&&
charset="utf8")&&&&
#这里要注明是utf8字符集,文件开头最好也加上utf-8的声明
cursor=db.cursor()
os.path.exists('test.dat'):
rFile = open('test.dat', 'r')
lines = rFile.readlines()
rFile.close()
for line in lines:
&&&&&&&&&&&
print "handle line:%d" % (loop)
&&&&&&&&&&&
myset = line.split(' ')
&&&&&&&&&&&&
&&&&&&&&&&&
sqlstr = "INSERT INTO wg_Content (type,title,url,speed,des,size)
VALUES('%s','%s','%s','%s','%s','%s')" \
&&&&&&&&&&&&&&&
%(myset[0],myset[1],myset[2],myset[3],myset[4],myset[5])
&&&&&&&&&&&
cursor.execute(sqlstr)
&&&&&&&&&&&
1&&&&&&&&&&&
&&&&&&&&&&&
db.commit()
cursor.close()
db.close()
二、Python中插入MySQL中文乱码的问题
mysql的默认编码为latin1,查找mysqldb的源码关键报错的地方是cursor.execute,这里要执行一下encode(charset),既然这里要encode,那就在外面先decode一下,果然什么都不改,在自己的调用函数里做decode。
sql = 'insert into aa values('测试')'
sql = sql.decode('latin1')
cursor.execute(sql)
三、Python操作MySQL以及中文乱码的问题
我用了下面几个措施,保证MySQL的输出没有乱麻:
&&& 1 Python文件设置编码 utf-8 (文件前面加上
#encoding=utf-8)
2 MySQL数据库charset=utf-8
3 Python连接MySQL是加上参数 charset=utf8
4 设置Python的默认编码为 utf-8 (sys.setdefaultencoding(utf-8)
& Python操作MySQL以及中文乱码的问题 收藏
Python操作MySQL需要安装Python-MySQL
可以从网上搜索一下,和一般的Python包一样安装
安装好之后,模块名字叫做MySQLdb ,在Window和Linux环境下都可以使用,试验了一下挺好用,
不过又发现了烦人的乱麻问题,最后用了几个办法,解决了!
我用了下面几个措施,保证MySQL的输出没有乱麻:
Python文件设置编码 utf-8 (文件前面加上 #encoding=utf-8)
MySQL数据库charset=utf-8
Python连接MySQL是加上参数 charset=utf8
设置Python的默认编码为 utf-8 (sys.setdefaultencoding(utf-8)
mysql_test.py
#encoding=utf-8
import sys
import MySQLdb
reload(sys)
sys.setdefaultencoding('utf-8')
db=MySQLdb.connect(user='root',charset='utf8')
cur=db.cursor()
cur.execute('use mydb')
cur.execute('select * from mytb limit 100')
f=file("/home/user/work/tem.txt",'w')
for i in cur.fetchall():
f.write(str(i))
&&& f.write("
cur.close()
上面是linux上的脚本,windows下运行正常!
注:MySQL的配置文件设置也必须配置成utf8
设置 MySQL 的 my.cnf 文件,在
[client]/[mysqld]部分都设置默认的字符集(通常在/etc/f):
[client]default-character-set =
utf8[mysqld]default-character-set = utf8
本文来自CSDN博客,转载请标明出处:
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。python 链接mysql 出错 - 开源中国社区
当前访客身份:游客 [
当前位置:
import MySQLdb
conn = MySQLdb.connect(host='localhost',user='root',passwd='1111111')
cur = conn.cursor()
cur.close()
conn.close()
php 连接mysql 是正常的
#password = your_password
= /tmp/mysql.sock
# Here follows entries for some specific programs
# The MySQL server
= /tmp/mysql.sock
Traceback (most recent call last):
File &/home/zou/work/demo/demo.py&, line 5, in &module&
conn = MySQLdb.connect(host='localhost',user='root',passwd='88888')
File &/usr/lib/python2.7/dist-packages/MySQLdb/__init__.py&, line 81, in Connect
return Connection(*args, **kwargs)
File &/usr/lib/python2.7/dist-packages/MySQLdb/connections.py&, line 187, in __init__
super(Connection, self).__init__(*args, **kwargs2)
_mysql_exceptions.OperationalError: (2002, &Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)&)
共有7个答案
<span class="a_vote_num" id="a_vote_num_
&HOST&: '/path/to/your/socket.sock'
<span class="a_vote_num" id="a_vote_num_
Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'
原因说的蛮清楚了。你看看你有没有这个文件
--- 共有 1 条评论 ---
var/run/mysqld/mysqld.sock
run/下没有mysqld 这个目录
(4年前)&nbsp&
<span class="a_vote_num" id="a_vote_num_
mysqld.sock 这个应该是文件,不是目录
就是因为没有,所以你连接的时候才会报错,应该是这样
<span class="a_vote_num" id="a_vote_num_
mysqld.sock文件,检查一下
--- 共有 1 条评论 ---
怎么检测,shell 登录mysql 是正常的
刚学python 搞的我一头雾水
(4年前)&nbsp&
<span class="a_vote_num" id="a_vote_num_
吧localhost 改成127.0.0.1就好了
conn = MySQLdb.connect(host='127.0.0.1',user='root',passwd='88888')
<span class="a_vote_num" id="a_vote_num_
查看一下system32下的hosts文件,看是不是把localhost指向到其他地址了
默认只有一条这样的信息
localhost 127.0.0.1
--- 共有 2 条评论 ---
看我上面的回答,这个是系统配置的问题
(4年前)&nbsp&
localhost 指向了127.0.0.1
这是为啥呢
(4年前)&nbsp&
<span class="a_vote_num" id="a_vote_num_
linux&下sudo vi /etc/hosts 出现以下内容
127.0.0.1 localhost
&windows 下打开C:\WINDOWS\system32\drivers\etc\hosts ,
127.0.0.1&&&&&& localhost
--- 共有 2 条评论 ---
这个是你自己的本地机器的原因吧 是不是如果用域名就没问题了 好是本地的什么配置导致的用localhost出现的问题 不用localhost应该就没有问题 具体的忘了 这个不用纠结吧 
(7个月前)&nbsp&
本来就这样啊
127.0.0.1 localhost
为啥用 localhost 不行呢
(4年前)&nbsp&
更多开发者职位上
有什么技术问题吗?
cooc123...的其它问题
类似的话题如何使用Python连接MySQL
来一个简单的例子,看Python如何操作数据库,相比Java的JDBC来说,确实非常简单,省去了很多复杂的重复工作,只关心数据的获取与操作。
需要有相应的环境和模块:
Ubuntu 14.04 64bit
Python 2.7.6
注意:Ubuntu 自带安装了Python,但是要使用Python连接数据库,还需要安装MySQLdb模块,安装方法也很简单:
sudo apt-get install MySQLdb
然后进入Python环境,import这个包,如果没有报错,则安装成功了:
Python 2.7.6 (default, Jun 22 :13)
[GCC 4.8.2] on linux2
Type &help&, &copyright&, &credits& or &license& for more information.
&&& import MySQLdb
Python标准的数据库接口的Python DB-API(包括Python操作MySQL)。大多数Python数据库接口坚持这个标准。不同的数据库也就需要不同额模块,由于我本机装的是MySQL,所以使用了MySQLdb模块,对不同的数据库而言,只需要更改底层实现了接口的模块,代码不需要改,这就是模块的作用。
Python数据库操作
首先我们需要一个测试表
建表语句:
CREATE DATABASE
DROP TABLE IF EXISTS python_
CREATE TABLE python_demo (
&id int NOT NULL AUTO_INCREMENT COMMENT '主键,自增',
&user_no int NOT NULL COMMENT '用户编号',
&user_name VARBINARY(50) NOT NULL COMMENT '用户名',
&password VARBINARY(50) NOT NULL COMMENT '用户密码',
&remark VARBINARY(255) NOT NULL COMMENT '用户备注',
&PRIMARY KEY (id,user_no)
)ENGINE =innodb DEFAULT CHARSET = utf8 COMMENT '用户测试表';
INSERT INTO python_demo(user_no, user_name, password, remark) VALUES
&(1001,'张三01','admin','我是张三');
INSERT INTO python_demo(user_no, user_name, password, remark) VALUES
&(1002,'张三02','admin','我是张三');
INSERT INTO python_demo(user_no, user_name, password, remark) VALUES
&(1003,'张三03','admin','我是张三');
INSERT INTO python_demo(user_no, user_name, password, remark) VALUES
&(1004,'张三04','admin','我是张三');
INSERT INTO python_demo(user_no, user_name, password, remark) VALUES
&(1005,'张三05','admin','我是张三');
INSERT INTO python_demo(user_no, user_name, password, remark) VALUES
&(1006,'张三06','admin','我是张三');
INSERT INTO python_demo(user_no, user_name, password, remark) VALUES
&(1007,'张三07','admin','我是张三');
INSERT INTO python_demo(user_no, user_name, password, remark) VALUES
&(1008,'张三08','admin','我是张三');
Python代码
# --coding=utf8--
import ConfigParser
import sys
import MySQLdb
def init_db():
& conn = MySQLdb.connect(host=conf.get('Database', 'host'),
&&&&&&& user=conf.get('Database', 'user'),
&&&&&&& passwd=conf.get('Database', 'passwd'),
&&&&&&& db=conf.get('Database', 'db'),
&&&&&&& charset='utf8')
& return conn
& print &Error:数据库连接错误&
& return None
def select_demo(conn, sql):
& cursor = conn.cursor()
& cursor.execute(sql)
& return cursor.fetchall()
& print &Error:数据库连接错误&
& return None
def update_demo():
def delete_demo():
def insert_demo():
if __name__ == '__main__':
&conf = ConfigParser.ConfigParser()
&conf.read('mysql.conf')
&conn = init_db()
&sql = &select * from %s& % conf.get('Database', 'table')
&data = select_demo(conn, sql)
fetchall()字段特殊字符过滤处理
最近在做数据仓库的迁移工作,之前数据仓库的数据都是用的shell脚本来抽取,后来换了python脚本.
但是在把数据抽取存放到hadoop时,出现了一个问题:
由于数据库字段很多,提前也不知道数据库字段会存储什么内容,hive建表是以\t\n做分隔,这就导致了一个问题,如果mysql字段内容里面本身含有\t\n,那么就会出现字段错位情况,并且很头疼的是mysql有100多个字段,也不知道哪个字段会出现这个问题.
shell脚本里的做法是在需要抽取的字段上用mysql的replace函数对字段进行替换,例如,假设mysql里的字段是column1 varchar(2000),那么很可能就会出现有特殊字符的情况,在查询的sql语句里加上
select replace(replace(replace(column1,'\r',''),'\n',''),'\t','')
之前一直是这么干的,但是这样写sql特别长,特别是有100多个字段,也不知道哪个有特殊字符,只要都加上.
所以在python中对字段不加处理,最终导致hive表字段对应出现偏差,所以在python里从mysql查询到的字段在写到文件之前需要对每个字段进行过滤处理
看个例子,我就以mysql测试为例,首先建一张测试表
CREATE TABLE `filter_fields` (
&`field1` varchar(50) DEFAULT NULL,
&`field2` varchar(50) DEFAULT NULL,
&`field3` varchar(50) DEFAULT NULL,
&`field4` varchar(50) DEFAULT NULL,
&`field5` varchar(50) DEFAULT NULL,
&`field6` varchar(50) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;[1]&&&
【声明】:黑吧安全网()登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱,我们会在最短的时间内进行处理。
上一篇:【】【】[很郁闷]python2.7连接mysql5.5配置_python_
[很郁闷]python2.7连接mysql5.5配置
来源:人气:315
前言:今天在公司电脑上python版本跟自己家里电脑上的一样,不一样的是公司版本5.6,结果花了两天的时间都没配置好python和mysql
简单说就是python连接mysql一直报2003错误,报错代码为:(2003, "Can't ,connect to MySQL server on 'localhost' (10061)"
网上百度了一天的时间仍未找到解决办法,貌似mysql5.6起,其配置变了,反正公司电脑上mysql服务启动后,通过cmd输入netstat -ano查看mysql端口使用,结果发现其localadress为::1,貌似是v6地址,到目前不知道怎么解决。
回到家里后,想到网上有位前辈说实在不行换个版本的mysql吧,于是回家在自己电脑上配置情况如下:
python-2.7.10.msi安装,然后再path中添加安装路径
mysql-5.5.46-win32.msi:安装,然后再path中添加安装路径,然后参考前面的文章《》
MySQL-python-1.2.3.win32-py2.7.exe:直接安装,然后import MySQLdb是否安装正确
测试python连接居然没问题,真是无语了!(当然通过cmd输入netstat -ano查看mysql端口的localadress为127.0.0.1,这是正常的情况)
将前面三个安装完后编写一个py脚本文件,内容如下:
import MySQLdbconn=MySQLdb.connect(
host='localhost',#127.0.0.1也可以
port=3306,
user='root',
passwd='123456',
db='mysql',
)cur=conn.cursor()cur.execute("SELECT VERSION();")data = cur.fetchone()int "Database version : %s " % data
F5运行脚本,输出Database version : 5.5.46 ,看来完全没问题啊。
最后给出下载地址(若连接失效,请私信告知,谢谢!):
python-2.7.10.msi:https://www.python.org/downloads/windows/
mysql-5.5.46-win32.msi:/downloads/file/?id=458972
MySQL-python-1.2.3.win32-py2.7.exe:/s/awZ3drpB3YFxO
优质网站模板

我要回帖

更多关于 python s.connect 的文章

 

随机推荐