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

 

posted @ 2020-10-30 14:15  momomoi  阅读(144)  评论(0编辑  收藏  举报