数据库学习笔记03- pycharm连接mysql

3,Python 连接操作MySQL

安装配置git与pycharm连接

pycharm从gitee拉取代码

从git官网下载新版的git,安装操作可以全部使用默认下一步直到完成。

打开pycharm--> setting --> version control --> git ,在窗口顶部,path to Git executable会自动检测到git的安装路劲,点击Test验证是否可成功执行。

clone代码连接:https://gitee.com/fishatc/smart-testing.git

pycharm 上传代码到gitee仓库

step1:pycharm中安装gitee插件,安装之后会提示restart IDE,直接重启就好

step2: 登录gitee

step3:vcs--> import into version control --> share project on gitee

step4, 在弹出框中填写对应 的从仓库和描述信息即可 --》 点击share--》弹框中选择要commit的文件


step5, 如果修改了某个文件,右击该文件--》git --》Commit File

step6, push 到远程仓库

给项目建虚拟环境:

图形界面:

pycharm--> setting --> project --> project interpreter -->在齿轮处选择add --> 默认在项目目录下创建venv

命令行:

#方式1:
pip install virtualenv
#方式2:test_env为一个文件夹
python -m venv test_env
#激活虚拟环境
cd test_env/Scripts
activate
#退出虚拟环境
deactivate

替换pip镜像源为国内豆瓣的:直接使用pip命令替换

(venv) D:\db1901>pip install numpy -i https://pypi.douban.com/simple/

或者命令:

(venv) D:\db1901>pip config set global.index-url http://pypi.douban.com/simple/

安装依赖

依赖包requirements.txt 文件:

certifi==2019.6.16
chardet==3.0.4
idna==2.8
PyMySQL==0.9.3
redis==3.3.8
requests==2.22.0
urllib3==1.25.3
(venv) D:\db1901>pip install -r requirements.txt
#查看虚拟环境下已经安装的依赖包
(venv) D:\db1901>pip freeze
certifi==2019.6.16
chardet==3.0.4
idna==2.8
numpy==1.21.6
PyMySQL==0.9.3
redis==3.3.8
requests==2.22.0
urllib3==1.25.3
xlrd==2.0.1

pip 安装依赖报错

Could not install packages due to an EnvironmentError: [WinError 5] Access is denied: 'd:\db1901\venv\scripts\pip.exe'
Consider using the --user option or check the permissions.

可能原因是pip版本过低。

解决办法:直接使用第二条应该就OK.

尝试1,将Python安装文件夹C:\Program Files\Python37和虚拟环境文件夹D:\db1901\venv文件夹赋予administrators 和本机用户 full control 权限,重启电脑

在pycharm下terminal,执行

pip install -U pip

仍然报错:

Cannot open D:\db1901\venv\Scripts\pip-script.py

尝试2,执行一条命令 python -m ensurepip,发现pip版本从19.0.3降到18.1,再次执行pip install -U pip,成功升级到最新22.2。

通过python操作mysql

连接和插入数据

import pymysql

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

# 第一步:指定主机、端口、用户名、口令、数据库、字符集创建连接
conn = pymysql.connect(host='192.168.1.10', port=3306,
                       user='zabbix', password='123456',
                       database='company', charset='utf8',
                       autocommit=True)
try:
    # 第二步:通过连接对象的cursor方法获取游标对象
    with conn.cursor() as cursor:
        # 第三步:通过游标对象的execute方法向数据库发出SQL
        result = cursor.execute(
            'insert into tb_dpt values (%s, %s, %s)',
            (no, name, location)
        )
        if result == 1:
            print('新增部门成功!!!')
    # 第四步:所有操作都成功就提交
    conn.commit()
except pymysql.MySQLError as err:
    print(err)
    # 第四步:如果出现异常就回滚(撤销)
    conn.rollback()
finally:
    # 第五步:关闭连接释放资源
    conn.close()

删除

import pymysql

no = int(input('部门编号:'))

# 第一步:创建连接对象
conn = pymysql.connect(host='192.168.1.10', port=3306,
                       user='zabbix', password='123456',
                       database='company', charset='utf8',
                       autocommit=True)
try:
    # 第二步:获取游标对象
    with conn.cursor() as cursor:
        # 第三步:通过游标对象的execute方法向数据库发出SQL
        result = cursor.execute(
            #删除
            'delete from tb_dpt where dno=%s ',(no,),
        )
        if result == 1:
            print('删除部门成功!!!')
    # 第四步:所有操作都成功就提交
    conn.commit()
except pymysql.MySQLError as err:
    print(err)
    # 第四步:如果出现异常就回滚(撤销)
    # conn.rollback()
finally:
    # 第五步:关闭连接释放资源
    conn.close()

更新

import pymysql

no = int(input('部门编号:'))
dcom = input('部门对应的公司:')
# 第一步:创建连接对象
conn = pymysql.connect(host='192.168.1.10', port=3306,
                       user='zabbix', password='123456',
                       database='company', charset='utf8',
                       autocommit=True)
try:
    # 第二步:获取游标对象
    with conn.cursor() as cursor:
        # 第三步:通过游标对象的execute方法向数据库发出SQL
        result = cursor.execute(
            #更新部门对应公司
            'update tb_dpt set dcom=%s where dno=%s ',(dcom,no,),
        )
        if result == 1:
            print('更新部门成功!!!')
    # 第四步:所有操作都成功就提交
    conn.commit()
except pymysql.MySQLError as err:
    print(err)
    # 第四步:如果出现异常就回滚(撤销)
    # conn.rollback()
finally:
    # 第五步:关闭连接释放资源
    conn.close()

查询

import pymysql

# 第一步:创建连接对象
conn = pymysql.connect(host='192.168.1.10', port=3306,
                       user='zabbix', password='123456',
                       database='company', charset='utf8',
                       autocommit=True)
try:
    # 第二步:获取游标对象
    with conn.cursor() as cursor:
        # 第三步:通过游标对象的execute方法向数据库发出SQL
        # 查看部门
        cursor.execute('select dno,dname,dcom from tb_dpt')
        # print(cursor.fetchall())
        for i in cursor.fetchall():
            print('部门编号:', i[0], '部门名称:', i[1],'部门所在公司:', i[2])
except pymysql.MySQLError as err:
    print(err)
    # 第四步:如果出现异常就回滚(撤销)
    # conn.rollback()
finally:
    # 第五步:关闭连接释放资源
    conn.close()

4,一对一外键关联

create table tb_person
(
pid int auto_increment,
pname varchar(50) not null,
primary key (pid)
);

create table tb_card
(
cid int auto_increment,
cno char(18) not null,
ps varchar(255) not null,
expire date not null,
pid int not null,
primary key (cid)
);

-- 添加外键约束
alter table tb_card add constraint fk_card_pid foreign key (pid) references tb_person (pid);
alter table tb_card add constraint uni_card_pid unique (pid);
posted @ 2022-10-01 08:55  逆流的鱼2016  阅读(370)  评论(0编辑  收藏  举报