python 基础之 数据库操作篇

python 操作mysql 方法讲解:

  1. 安装模块:pymysql pip install pymysql
  2. 启动mysql数据库
  3. 连接数据库:connect(),返回一个对象
    con = pymysql.connect(user,passwd,port,host,db,charset) user,数据库用户 passwd,数据库登录密码 host,数据库服务器地址 db,要连接的database port,端口号,默认为3306 charset,字符集 connect返回对象常用的方法 cursor(),创建游标 commit(),提交事务 rollback(),回滚事务 close(),关闭数据库连接
  1. 创建游标:cur = con.cursor(),返回游标对象,查询语句的结果保存在元组中 cur = con.cursor(pymysql.cursors.DictCursor),查询语句的结果保存在字典中·
  2. 操作数据库:通过游标调用execute()方法执行SQL语句 fetchone(),从查询结果中获取1行数据 fetchmany(n),从查询结果中获取n行数据 fetchall(),从查询结果中获取所有数据
  3. 关闭连接 关闭游标:cur.close() 关闭数据库连接:con.close()

例:

import pymysql
# 连接数据库
con = pymysql.connect(user=root,passwd=123456,
                      host=47.92.203.151,db=atm,
                      port=3306,charset=utf8)
# 创建游标
cur = con.cursor(pymysql.cursors.DictCursor)
#
acc = input(账号:)
# pwd = input(密码:)
# name = input(姓名:)
# bal = input(余额:)
# sql = f"insert into accounts(account,passwd,name,balance) values({acc},md5({pwd}),{name},{bal});"
sql = fselect * from accounts where account="{acc}";
n = cur.execute(sql)  # 执行SQL语句
# fetchone(),从查询结果中获取1行数据
# fetchmany(n),从查询结果中获取n行数据
# fetchall(),从查询结果中获取所有数据
print(n)
print(cur.fetchone())
con.commit()    # 提交事务
# 关闭
cur.close()    # 关闭游标
con.close()    # 关闭数据库连接

常用方法整理:

import pymysql


class Mysql:

    def con_db(self, user, pwd, host, db, port=3306):
        # 连接数据库
        con = pymysql.connect(user=user, passwd=pwd,
                              host=host, db=db,
                              port=port)
        # 创建游标
        cur = con.cursor(pymysql.cursors.DictCursor)
        return con, cur

    def dql(self, cur, sql):
        cur.execute(sql)
        res = cur.fetchall()  # 获取所有查询结果,查询结果为空返回(),不为空返回[{xx:yy}]
        return res

    def dml(self, con, cur, sql):
        cur.execute(sql)
        con.commit()  # 所有SQL执行完成后,提交事务

    def close(self, con, cur):
        cur.close()
        con.close()

    # 删除数据库数据
    def drop_table(self, user, pwd, host, db, port, sql):
        con, cur = self.con_db(user=user, pwd=pwd, host=host, db=db, port=port)
        self.dml(con, cur, sql)
        self.close(con, cur)

    def search_info(self, user, pwd, host, db, port, sql):
        """
        数据库查询方法
        :param user:数据库用户名
        :param pwd: 数据库密码
        :param host: 数据库主机地址
        :param db: 数据库工作簿
        :param port: 端口
        :param sql: 查询语句
        :return:
        """
        con, cur = self.con_db(user, pwd, host, db, port)
        res = self.dql(cur, sql)
        self.close(con, cur)
        return res
经验分享 程序员 微信小程序 职场和发展