py連接mysql

傳入碼云,
在碼云上新建一個倉庫,然后復制倉庫地址,點git


image.png

然后將復制的地址放在URL中,將你文件放在你創(chuàng)建的位置


image.png
點擊CLone, 進入pycharm之后
每創(chuàng)建一個.py文件會提示你(add, no) 你選add后,紅色的文件會變成綠色的,表示你
可以上傳到gitee上了,等你寫完程序后可以在pycharm上面有個VCS的目錄, 
點擊push就能傳上去了,在gitee上刷新就行了

如圖:


image.png

先創(chuàng)建一個python(不要用中文命名)的虛擬環(huán)境,
然后可以在C:\Users\Administrator添加一個pip包,在pip里創(chuàng)建pip.ini文件,
pip.ini寫入:

[global]
index-url=https://pypi.doubanio.com/simple

-- 這樣可以加快下載速度

然后在python的終端下載pymysql

pip install pymysql == 0.9.3

-- 可以查看下載的安裝包

pip freeze

-- 可以創(chuàng)建一個requirement.txt文件

pip freeze > requirement.txt

我們創(chuàng)建一個example01.py文件
先導入

import pymysql

如果你要設置自動提交可以用

autocommit = True  # 默認為False

example01.py文件中(主要是連接數(shù)據(jù)庫的格式,還有sql語句的增刪改)

注意: execute() - 他要的是元祖,所以只有一個參數(shù)時要用',' - (xx,)
import pymysql


def main():

    no = input('部門編號:')
    name = input('部門名稱:')
    loc = input('部門所在地:')

    # 1.創(chuàng)建連接對象
    conn = pymysql.connect(host='127.0.0.1', port=3306,
                           user='root', password='root',
                           db='hrs', charset='utf8')

    try:
        # 2. 獲得游標對象
        # 離開這里它會自動關閉
        with conn.cursor() as cursor:
            # 3.執(zhí)行sql執(zhí)行得到結果
            # 這里的%s是安全的占位符,是sql中的,而不是py的字符串,所以不能用%d
            # result = cursor.execute('insert into tb_dept values (%s, %s, %s)',
            #                         (no, name, loc))

            # execute() - 他要的是元祖,所以只有一個參數(shù)時要用',' - (xx,)
            # result = cursor.execute('delete from tb_emp where dno=%s', (no,))

            result = cursor.execute('update tb_emp set dloc=%s where dno=%s', (loc, no))
            if result == 1:
                print('更新成功')
            # 4.操作成功執(zhí)行提交
            conn.commit()
    except pymysql.MySQLError as error:
        print(error)
        # 4.操作失敗執(zhí)行回滾(和上面那個只會執(zhí)行一個,所以也用4)
        conn.rollback()
    finally:
        # 5.關閉連接釋放資源
        conn.close()


if __name__ == '__main__':
    main()

================================

創(chuàng)建example02.py文件中(查,將數(shù)據(jù)庫的信息如何在py上讀出來)

這里涉及到了format函數(shù)
str.format(),它增強了字符串格式化的功能。

基本語法是通過 {} 和 : 來代替以前的 % 。

format 函數(shù)可以接受不限個參數(shù),位置可以不按順序。

>>>"{} {}".format("hello", "world")    # 不設置指定位置,按默認順序
'hello world'
 
>>> "{0} {1}".format("hello", "world")  # 設置指定位置
'hello world'
 
>>> "{1} {0} {1}".format("hello", "world")  # 設置指定位置
'world hello world'


'{0}\t{1}\t{2}'.format(self.no, self.name, self.loc)  # \t是換行

f'{self.no}\t{self.name}\t{self.loc}' # 和上面一樣的

import pymysql


class Dept(object):

    def __init__(self, no, name, loc):
        self.no = no
        self.name = name
        self.loc = loc

    def __str__(self):
        return '{0}\t{1}\t{2}'.format(self.no, self.name, self.loc)
        # return f'{self.no}\t{self.name}\t{self.loc}' # 和上面一樣的


def main():

    # 1.創(chuàng)建連接對象
    conn = pymysql.connect(host='127.0.0.1', port=3306,
                           user='root', password='root',
                           db='hrs', charset='utf8',
                           cursorclass=pymysql.cursors.DictCursor)
    # cursorclass=pymysql.cursors.DictCursor添加了之后變?yōu)樽值?而不是元祖

    try:
        # 2. 獲得游標對象
        # 離開這里它會自動關閉
        with conn.cursor() as cursor:
            # 3.執(zhí)行sql執(zhí)行得到結果
            cursor.execute('select dno as no, dname as name, dloc as loc from tb_dept')
            results = cursor.fetchall()
            # print(results)
            for row in results:
                # TODO 這是沒有DictCursor之前(是元祖)
                # print(row)
                # print(f'部門編號: {row[0]}')
                # print(f'部門名稱: {row[1]}')
                # print(f'部門所在地: {row[2]}')
                # print('-' * 20)

                # 轉換成字典更方便取值
                # TODO 添加了DictCursor之后為字典了  end='\t' - 最后一行換行
                # print(row['no'], end='\t')
                # print(row['name'], end='\t')
                # print(row['loc'])

                # 用不定長參數(shù)取參, ** - 取值  row是字典
                # print(row)  # ({'no': 40, 'name': '運維部', 'loc': '深圳'})
                dept = Dept(**row)
                print(dept)  # 結果和上一步一樣的 其中一條是40 運維部 深圳

    except pymysql.MySQLError as error:
        print(error)
        # 4.操作失敗執(zhí)行回滾(和上面那個只會執(zhí)行一個,所以也用4)
    finally:
        # 5.關閉連接釋放資源
        conn.close()


if __name__ == '__main__':
    main()
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容