【三个位置查找数据库相关】
右侧上方database
左下方database
配置里面的plugins插件搜索安装
pycharm可以充当很多款数据库软件的客户端
PS:pycharm连接数据库的时候,需要提前创建好库、表、数据
(pycharm连接数据库方法)


(判断是否连接数据库成功)

(基本操作)


【django连接数据库MySQL】
在settings.py中默认自带的数据库是sqlite3:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}
但是这个数据库功能太简短,且对日期数据敏感,不建议用,我们换一个自己写的数据库

但是这样启动django项目时候又报错

步骤二:
1 代码声明 2 3 django默认用的是mysqldb模块连接的MySQL 4 但该模块的兼容性不好,需要手动改为用pymysql连接 5 6 需要告诉django不要用默认的mysqldb,用pymysql 7 在项目名称下的init或者任意的应用名下的__init__.py文件中添加如下代码: 8 import pymysql 9 pymysql.install_as_MySQLdb()

pip insatll mysqlclient

PS注意:因为版本问题,会引发如下错误,
raise NotSupportedError(
django.db.utils.NotSupportedError: MySQL 8 or later is required (found 5.7.43).
解决办法:
1.全局搜索shift+ctrl+f:check_database
2.

。
。
【django之ORM】
ORM对象关系映射:
对象关系映射器(Object Realtion Mapping)是一种代码库,它能自动将存储在关系型数据库表中的数据转化成在应用程序代码中更加常用的对象。
通过ORM我们可以通过类的方式去操作数据库,而不用再写原生的SQL语句。
通过把表映射成类,把行作为对象,把字段作为属性。
ORM在执行对象操作的时候最终还是会把对应的操作转换为数据库原生语句。
1 ORM的作用: 2 能够让不会SQL语句的python程序员 3 使用python面向对象的语法来操作数据库 4 用它能够极大的提高开发的效率,只需要专注于python代码的编写就行了,sql就不用管了 5 ---------------------------------------------------- 6 7 将类 映射成 一张表 8 操作类就是在操作表,创建一个类就是在创建一张表!!! 9 ------------------------ 10 11 将类产生的对象 映射成 表的一条条数据 12 也就是说用类产生了一个对象 相当于从表里面拿了一条数据 13 ------------------------------------------------------ 14 15 对象点名字 相当于 数据获取字段对应的值 16 ------------------------------------------------------ 17 怎么理解了 18 如果用了ORM,在进入mysql的对应的库里面后,在里面输入命令 class User: 就相当于帮你用sql语句 19 create table User(字段名 字段类型 约束条件,字段名2 字段类型2 约束条件2); 20 创建了一个User表! 21 22 用类产生一个对象User() 就相当于从User表里面拿一条数据!!! 23 用对象去点 User().name 就相当于拿这条数据中name字段对应的值!!! 24 25 这样就算不会sql语句也能操作数据库了!!! 26 ------------------------------------------------------ 27 ORM由于高度封装了SQL语句!!! 28 所以有时候效率较低, 我们需要自己写SQL语句!!!
。
。
ORM基本操作
如果想写ORM必须要到应用下的models.py模型层和数据库打交道的地方
1 class User(models.Model): 2 # 等价于 id int primary_key auto_increment 3 id = models.AutoField(primary_key=True, verbose_name='主键') 4 # username varchar(50) 5 username = models.CharField(max_length=50, verbose_name='用户名') 6 ''' 7 CharField必须指定一个参数,参数表示当前字段所对应的列中可以存储的数据的最大长度,不然会报错 8 verbose_name 参数表示当前字段在admin后台中显示的名字 9 ''' 10 # password int 11 password = models.IntegerField(verbose_name='密码') 12 13 ================================================ 14 python manage.py makemigrations 将操作记录记录到migrations文件夹上 15 16 17 python manage.py migrate 将操作真正的同步到数据库中 18 19 # 只要修改了models.py中跟数据库相关的代码,就必须重新执行上述的两条命令 20 21 22 23 ----------------------------------------------------------------------------------- 24 由于一张表中必须要有一个主键字段,并且一般情况下都叫id字段 25 所以orm当中当我们不定义主键字段的时候,orm会自动帮我们创建一个名为id字段 26 也就意味着后续我们在创建模型表的时候如果主键字段没有额外的叫法,那么主键自段可以省略不写 27 28 29 # 重新创建一张表 30 class User2(models.Model): 31 username = models.CharField(max_length=50) 32 password = models.IntegerField()

然后出现这么多的表


。
(常用字段)
1 常用字段: 2 AutoField 3 int自增列,必须填入参数 primary_key=True。当model中如果没有自增列,则自动会创建一个列名为id的列。 4 5 IntegerField 6 一个整数类型,范围在 -2147483648 to 2147483647。(一般不用它来存手机号(位数也不够),直接用字符串存,) 7 8 CharField 9 字符类型,必须提供max_length参数, max_length表示字符长度。 10 11 DateField 日期字段 12 13 DateTimeField 日期时间字段 14 15 ----------------------- 16 字段参数 17 null 用于表示某个字段可以为空。字段括号里面不写null=True 就默认为该字段不能为空 18 19 unique 如果设置为unique=True 则该字段在此表中必须是唯一的 。 20 21 default 为该字段设置默认值。 22 --------------------------------------------- 23 Field有字段的意思 24 此时模型类虽然创好了,并不会立即起作用!!! 25 但是还没法在数据库里面根据该模型类创建表!!! 26 ----------------------------------------------
浙公网安备 33010602011771号