python3.7 Pycharm Django mysql 开发信息系统一连接数据库

7 篇文章 2 订阅
2 篇文章 0 订阅

在django项目创建完成并能够成功运行之后。就可以开始搭建系统了。

(默认装好了mysql和pymysql和mysqlclient)我前面的博客有详细的步骤。

1.在settings.py文件中添加创建的app名称

左边目录栏为我的项目和app文件。在INSTALLED_APPS =中添加app名称‘tea1’

 

2.将settings.py文件中的database改为下图所示自己的mysql数据库信息。

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'tsql',			# 数据库名称
        'USER': 'root',       		# 名字
        'PASSWORD': '19990124',       # 密码
        'HOST': 'localhost',		# 可以不写,默认的

    }
}

3.在settings.py同级目录下的_init_.py中写入下列代码。

import pymysql
# 打开数据库连接
pymysql.install_as_MySQLdb()
# 前面两行是重要的,后面这些是测试用的,这里打印出mysql的版本,显示在程序运行界面上

db = pymysql.connect('localhost', 'root', '19990124', 'tsql')
# 使用cursor()方法获取操作游标
cursor = db.cursor()
# 使用execute方法执行SQL语句
cursor.execute("SELECT VERSION()")
# cursor.execute('SELECT VERSION()')
# 使用 fetchone() 方法获取一条数据库。
data = cursor.fetchone()
print("Database version : %s " % data)

db.close()

按道理说这时候就再运行manage.py的时候应该能够成功运行了。但!!这里有个坑就是可能会出现如下错误:

django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.3.

出现这种情况是因为python3.7+django2.2+pymysql在运行时django2.2内部有版本限制。

具体解决办法为:

(1)进入python3.7的目录(python的安装目录),找到base.py文件

这是我的目录:‎⁨Macintosh HD⁩ ▸ ⁨应用程序⁩ ▸ ⁨anaconda3⁩ ▸ ⁨python⁩ ▸ ⁨lib⁩ ▸ ⁨python3.7⁩ ▸ ⁨site-packages⁩ ▸ ⁨django⁩ ▸ ⁨db⁩ ▸ ⁨backends⁩ ▸ ⁨mysql⁩->base.py

(2)用编辑器打开,这里我用的sublime(图方便)

把36/37行的这两句话注释掉。

# if version < (1, 3, 13):
 #   raise ImproperlyConfigured('mysqlclient 1.3.13 or newer is required; you have %s.' % Database.__version__)

(3)保存文件更改后退出。

4.这时候返回终端再次运行python manage.py runserver,就可以成功运行了。

界面如下:

5.数据迁移

在终端输入命令:python manage.py makemigrations

                               python manage.py imgrate

数据迁移完成。

关于migrate 和makemigrations 的原理和区别,照搬别人的总结

原文链接:https://blog.csdn.net/weixin_43582101/article/details/87927618

1、makemigrations 和 migrate 工作原理分别是什么:

makemigrations:根据检测到的模型创建新的迁移。迁移的作用,更多的是将数据库的操作,以文件的形式记录下来,方便以后检查、调用、重做等等。
migrate:使数据库状态与当前模型集和迁移集同步。说白了,就是将对数据库的更改,主要是数据表设计的更改,在数据库中真实执行。例如,新建、修改、删除数据表,新增、修改、删除某数据表内的字段等等。
2、如果不想使用 Django 的 makemigrations 和 migrate 功能,但是不小心执行了这两个命令会发生什么,

首先在该app下建立 migrations目录,并记录下你所有的关于modes.py的改动,比如0001_initial.py,
接着执行migrate的话,这时候会作用到数据库文件,产生对应的表
 

总的来说,如果你想在已有的系统中的数据库里新增新的表,可以直接在navicat里操作,不用重新执行makemigrations和migrate的命令。因为这两个命令是针对model文件的修改来操作数据库的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值