py连接mysql

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

py连接mysql
文章图片
image.png
然后将复制的地址放在URL中,将你文件放在你创建的位置

py连接mysql
文章图片
image.png

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

如图:

py连接mysql
文章图片
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 pymysqldef 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(),它增强了字符串格式化的功能。
基本语法是通过 {} 和 : 来代替以前的 % 。
【py连接mysql】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 pymysqlclass Dept(object):def __init__(self, no, name, loc): self.no = no self.name = name self.loc = locdef __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()

    推荐阅读