py连接mysql

传入码云,
在码云上新建一个仓库,然后复制仓库地址,点git


image.png

然后将复制的地址放在URL中,将你文件放在你创建的位置


image.png
点击CLone, 进入pycharm之后
每创建一个.py文件会提示你(add, no) 你选add后,红色的文件会变成绿色的,表示你
可以上传到gitee上了,等你写完程序后可以在pycharm上面有个VCS的目录, 
点击push就能传上去了,在gitee上刷新就行了

如图:


image.png

先创建一个python(不要用中文命名)的虚拟环境,
然后可以在C:\Users\Administrator添加一个pip包,在pip里创建pip.ini文件,
pip.ini写入:

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

-- 这样可以加快下载速度

然后在python的终端下载pymysql

pip install pymysql == 0.9.3

-- 可以查看下载的安装包

pip freeze

-- 可以创建一个requirement.txt文件

pip freeze > requirement.txt

我们创建一个example01.py文件
先导入

import pymysql

如果你要设置自动提交可以用

autocommit = True  # 默认为False

example01.py文件中(主要是连接数据库的格式,还有sql语句的增删改)

注意: execute() - 他要的是元祖,所以只有一个参数时要用',' - (xx,)
import pymysql


def main():

    no = input('部门编号:')
    name = input('部门名称:')
    loc = input('部门所在地:')

    # 1.创建连接对象
    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.执行sql执行得到结果
            # 这里的%s是安全的占位符,是sql中的,而不是py的字符串,所以不能用%d
            # result = cursor.execute('insert into tb_dept values (%s, %s, %s)',
            #                         (no, name, loc))

            # execute() - 他要的是元祖,所以只有一个参数时要用',' - (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.操作成功执行提交
            conn.commit()
    except pymysql.MySQLError as error:
        print(error)
        # 4.操作失败执行回滚(和上面那个只会执行一个,所以也用4)
        conn.rollback()
    finally:
        # 5.关闭连接释放资源
        conn.close()


if __name__ == '__main__':
    main()

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

创建example02.py文件中(查,将数据库的信息如何在py上读出来)

这里涉及到了format函数
str.format(),它增强了字符串格式化的功能。

基本语法是通过 {} 和 : 来代替以前的 % 。

format 函数可以接受不限个参数,位置可以不按顺序。

>>>"{} {}".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.创建连接对象
    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添加了之后变为字典,而不是元祖

    try:
        # 2. 获得游标对象
        # 离开这里它会自动关闭
        with conn.cursor() as cursor:
            # 3.执行sql执行得到结果
            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'])

                # 用不定长参数取参, ** - 取值  row是字典
                # print(row)  # ({'no': 40, 'name': '运维部', 'loc': '深圳'})
                dept = Dept(**row)
                print(dept)  # 结果和上一步一样的 其中一条是40 运维部 深圳

    except pymysql.MySQLError as error:
        print(error)
        # 4.操作失败执行回滚(和上面那个只会执行一个,所以也用4)
    finally:
        # 5.关闭连接释放资源
        conn.close()


if __name__ == '__main__':
    main()
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,904评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,581评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,527评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,463评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,546评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,572评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,582评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,330评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,776评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,087评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,257评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,923评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,571评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,192评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,436评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,145评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,127评论 2 352