python连接mysql数据库,直接使用
from sqlalchemy import create_engine from conf import settings import pymysql
# mysql设置
HOST = ''
PORT = 3306
USER = ''
PASSWD = ''
DB = 'shzy_map'
CHATSET = 'utf8
class ConnMysqlDB: """ 连接与操作数据库 con = ConnMysqlDB() #使用前需创建实例 conn = con.connMysql() # 先建立连接 """ def __init__(self, host=HOST, port=PORT, user=USER, passwd=PASSWD, db=DB, charset=CHATSET): self.host = host self.port = port self.user = user self.passwd = passwd self.db = db self.charset = charset self.conn = None # 数据库连接对象 self.cursor = None # 操作数据库的游标 def connMysql(self): """ 建立数据库连接 建立游标 :return:返回数据库连接对象,主要用于pandas操作,其他引用无需获取返回值 """ self.conn = pymysql.connect(host=self.host, port=self.port, user=self.user, password=self.passwd, database=self.db, charset=self.charset) self.cursor = self.conn.cursor() return self.conn def closeConn(self): """ 断开数据库连接,释放游标 :return: """ self.cursor.close() self.conn.close() def coonEngine(self): """ 连接数据库,用于pandas pandas 的数据库储存方式特殊,需要用这个函数连接才能操作 :return: """ sql = 'mysql+pymysql://' + self.user + ':' + self.passwd + '@' + self.host + ':' + str( self.port) + '/' + self.db + '?charset=utf8' conn = create_engine(sql) return conn def queryData(self, sql=''): """ 查询所有的条数 :param sql: 'select * from tables_name' :return: 返回多个元组,即返回多条记录(rows),如果没有结果,则返回 () """ self.cursor.execute(sql) st = self.cursor.fetchall() return st def querySomeData(self, sql='', num=100): """ 查询指定条数 :param sql: 'select * from tables_name' :param num: 返回的条数 :return: 返回多个元组,即返回num条记录(rows),如果没有结果,则返回 () """ self.cursor.execute(sql) self.conn.commit() st = self.cursor.fetchmany(num) return st def delect_data(self, table_name): """ 清除指定表中所有数据,保留格式 :param table_name: 需清除的表名 :return: """ sql = "truncate %s" % table_name self.updateData(sql) def updateData(self, sql=''): """ 更新单条语句,做sql的操作 :param sql: sql语句 :return: """ self.cursor.execute(sql) self.conn.commit() return True def updateDataBatch(self, sql='', data=()): """ 批量更新数据,data为tuple """ self.cursor.executemany(sql, data) self.conn.commit() return True