zoukankan      html  css  js  c++  java
  • python习题:操作mysql数据库,传入sql返回执行结果

    import pymysql,json

    def op_mysql(sql,host='211.149.218.16',
    user='jxz',
    password='123456',
    db ='jxz',
    port = 3306,
    charset = 'utf8'):

    conn = pymysql.connect(host=host,
    user=user,
    password=password,
    db =db,
    port = port,
    charset = charset)

    cur = conn.cursor(cursor=pymysql.cursors.DictCursor)#指定curson的类型:字典类型,因为字典类型方便取值
        '''sql语句:select 不需要commit,但是需要用fetcheall或fetcheone,返回数据
    update,insert,delect等是没有返回结果的,但是需要commit一下,所以需要进行判断'''

    cur.execute(sql)#执行sql

    sql_start =sql[:6].upper()#取sql语句字符串前六位,根据前六位进行下面的判断

    if sql_start=='SELECT':
    res_list = cur.fetchall()#查询的需要返回结果,因为指定了cursor的类型是字典型,所以执行结果保存为字典格式的list
            res = json.dumps(res_list,ensure_ascii=False) # 把list转换成json串的方式返回

    # res = cur.fetchall() #json串的方式返回的是一个字符串,当我们需要用结果取值的时候,res返回的是一个 list 套 字典,方便取值进行后面操作,根据不同需求,更改不同的返回方式
        else:#除了查询语句之外,其他语句,均需要commit一下
    conn.commit()
    res = 'ok'

    cur.close()
    conn.close()
    return res

    if __name__ == '__main__': # 意思是,别人导入这个python文件的时候,下面的代码不会被执行,一般调试的时候用

    sql = "select * from bt_stu limit 5;"
    sql2 = "INSERT INTO `bt_stu` ( `real_name`, `sex`, `phone`, `class`, `type`) VALUES ( '赵四儿', '1', '17332881231', '靠山屯', '1');"
    res = op_mysql(sql)
    res2 = op_mysql(sql2)
    print(res)
    print(res2)
  • 相关阅读:
    Linux中Elasticsearch集群部署
    在.net core 项目中添加swagger支持
    ASP.NET Core 类库中取读配置文件
    Redis的服务安装步骤
    Lambda表达式多表连接的左连
    Angular7 学习资料
    Docker在eShopOnContainer项目中的使用方法
    绘图工具
    万能分页存储过程(SQL Server)
    为什么程序开发人员这么累?
  • 原文地址:https://www.cnblogs.com/blackbird0423/p/8324504.html
Copyright © 2011-2022 走看看