最近需要用到数据库存数据,所以安装了mysql。由于项目需要,用python2.7去连接数据库,
这当中发现了很多问题,下面说说安装步骤:
1.用pycharm打开自己的工程。
2.先尝试用pycharm自带的project interpreter安装试试:
File》Setting》Project》Project Interpreter》“+”》空白栏输入mysqldb》Install Package
这里要讲一下,为什么用mysqldb,在python2.7中连接mysql数据库的库
有mysqldb,mysql-python,mysqlclient。但是我都显示安装失败。
而网上最常用的pymysql,我可以安装成功,但是pymysql是python3中使
用的。
如果你这一步安装mysqldb 或 mysql-python 或 mysqlclient 成功,那下面
你就不需要看了。我的是安装失败:
3.下面手动安装pycharm。装之前,我先介绍一下我的pycharm配置,
python2.7+virtualenv的环境。所以我们要在virtualenv的环境中安装mysql。
这一点很重要,我在这里被坑了一天时间。
3.1 首先,下载mysqldb的安装包,下面的csdn中有。
https://download.csdn.net/download/u014613270/10437805?utm_source=bbsseo
然后找到mysqldb的下载目录,我的目录是“C:\Users\27664\Downloads”,
这个在后面的命令中要用到
3.2 打开pycharm的命令行,View》Tools Windows》Terminal
3.3 我的刚进入时的目录是:F:\python\label_tool_python_qt-point+line+rect
这个是我项目的根目录路径。下面我们要进入virtualenv环境,
cd venv/Scripts
activate
进入virtualenv环境后,在命令行前会有(venv)
然后进入之前文件的下载目录那里(上面提到的目录)
cd C:\Users\27664\Downloads
C:
最后,安装mysqldb:
pip install MySQL_python-1.2.5-cp27-none-win_amd64.whl
这时,会显示安装成功。
4.这时去project Interpreter中看一下,是否安装成功:
File》Setting》Project》Project Interpreter
5.最后说一下,mysqldb的库函数跟pycharm的不同,所以在查连接
函数等要注意是否是mysqldb的连接函数。比如connect函数,在mysqldb
中就不能加端口号port,否则会报错。还有一点就是,execute()执行完后,
记得commit()提交。下面是我写的简单的db模块,可以参考一下:
# -*- coding: utf-8 -*-
# @Time : 2018/8/22 13:38
# @Author : pantao
# @File : db.py
import MySQLdb
class DB:
'define DB class'
def __init__(self,host='localhost',user='root',passwd='123456',db='annotation'):
self.host=host
self.user=user
self.passwd=passwd
self.db=db
self.insertSql='''insert into alignmentdata values(%s,%s,%s,%s)'''
self.create_db_connect()
def __del__(self):
self.close_db_connect()
def create_db_connect(self):
self.db_conn=MySQLdb.connect(self.host,self.user,self.passwd,self.db)
def close_db_connect(self):
self.db_conn.close()
def insert_to_info(self,data):
cursor=self.db_conn.cursor()
try:
msg=cursor.execute(self.insertSql,data)
self.db_conn.commit()
except Exception:
msg=0
cursor.close()
return msg>0
def insert_to_infos(self,data):
cursor=self.db_conn.cursor()
try:
msg=cursor.executemany(self.insertSql,data)
self.db_conn.commit()
except Exception:
msg=0
cursor.close()
return msg==len(data)