(2) mysql驱动

sqlite驱动操作sqlite数据库,datagrip的jdbc java驱动操作mysql。所有我们要找python操作mysql驱动

驱动选择:

  1. MySQLDB。已经有C驱动mysql的成熟包,Mysqldb包python对这个C驱动包封装。优点效率高,py2环境和众多项目中使用。
    pip install MySQL-python
    缺点:windows下pip安装报错(因为pypi中压根没有这个包)。可以去网上找对应平台编译后的.whl安装(也可能出错)。最终解决去mysql官方下载对应平台的connector.msi安装。
  2. (推荐)pymysql。纯python写的。缺点效率稍低。优点方便安装,完全兼容mysqldb的语法。市场占有越来越高。
  3. pip install mysql-connector。python书写,类似MySQLdb但不依赖C语言驱动。

import pymysql.cursors

connection = pymysql.connect(
                            host='127.0.0.1',
                            port=3306,
                            user='root',
                            password='123456',    # 安全风险,未来会从环境变量读取
                            db='test',
                            charset='utf8mb4',  # 可以省略, 8.0客户端默认utf-8可以省略,5.x最好带上。 eg:AttributeError: 'NoneType' object has no attribute 'encoding'
                            cursorclass=pymysql.cursors.DictCursor    # 返回字典格式的结果集。不写返回默认元组格式。
)
# cursor = connection.cursor()
# cursor.execute()
# cursor.fetchone()
# cursor.close()
# connection.close()
try:
    with connection.cursor() as cursor:
        sql = """ SELECT * FROM shirt; """
        cursor.execute(sql)
        result = cursor.fetchall()
        print(result)
        for row in result:
            if row['owner'] == 1:
                print('小明有一件{}色的{}'.format(row['color'], row['style']))

    # with connection.cursor() as cursor:
    #     sql = """ INSERT INTO shirt values (%s, %s, %s, %s)"""
    #     affected_rows = cursor.execute(sql, (None, '裙子', '绿', 2))
    #     print(affected_rows)
    # connection.commit()

    with connection.cursor() as cursor:
        sql = """ update shirt set color='红' where style='外套' and owner=1"""
        sql1 = cursor.execute(sql)
        print(sql1)
    connection.commit()


except Exception as e:
    print(e)
finally:
    connection.close()
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章