美文网首页
py连接mysql

py连接mysql

作者: 遥远的她197 | 来源:发表于2019-04-25 17:53 被阅读0次

    传入码云,
    在码云上新建一个仓库,然后复制仓库地址,点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()
    

    相关文章

      网友评论

          本文标题:py连接mysql

          本文链接:https://www.haomeiwen.com/subject/krfagqtx.html