(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()
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章