0.Django项目创建步骤.
1.创建项目和创建APP
2.配置settings.py
1.STATIC_URL = '/static/' --> 默认配置好的
2.STATICFILES_DIRS = [os.path.join(BASE_DIR,'static')]
--->在项目的目录下创建一个存放静态文件的文件夹:static
3.注释掉csrf相关的哪一行
4.配置好数据库的连接的信息
5.在INSTALLED_APPS =[
...
'自己注册的APP']
1.ORM (对象关系映射) 很多语言的很多web框架中都有这个概念
2.为什么要有ORM?
1.写程序离不开数据.
2.在python程序中要用到数据库中的数据怎么办?
1.使用pymysql连接MySQL数据库的步骤
1.import pymysql
2.建立连接
conn = pymysql.connect( host = '127.0.0.1', port = 3360, database = 'db1', user = 'root', password = '123', charset = 'utf8', )
3.获取光标对象
cursor = conn.cursor() -->默认返回[(),()]
cursor = conn.cursor(cursor=pymysql.cursors.DictCurssor) -->默认返回[{},{}]
4.执行SQL语句
sql = select * from user where name = %s and age = %s;
cursor.execute(sql,['liming',18])
5.获取结果
1.cursor.fetchone()
2.cursor.fetchall()
3.cursor.fetchmany(n)
2.ORM
1.新的语法,不需要我们自己写SQL语句
2.我们要按照新的语法写代码,他帮我翻译成SQL语句
3.优点:开发效率高,容易移植,容易掌握
4.缺点:代码执行效率相对低
3.ORM重点
类 <--> 数据表
属性 <--> 字段
对象 <--> 数据行
3.如何使用ORM
1.ORM能帮助我们做什么事情?
1.操作数据表
2.操作数据行
2.Django在ORM中如何使用?
1.告诉Django框架连接那个数据库 --> 在setting.py文件下的DATABASES下配置所有与数据库相关的配置
DATABASES = { #default是默认的数据库 'default': { 'ENGINE': 'django.db.backends.mysql',#告诉Django要连接的是MySQL数据库 'NAME': 'db1', 'HOST': '127.0.0.1', 'PORT': 3306, 'USER':'root', 'PASSWORD':'123', } }
2.告诉Django框架使用什么连接数据库
在setting.py的同级目录下的__init__.py文件中导入:import pymysql pymysql.install_as_MySQLdb()
告诉django框架使用pymysql 代替pymysql.install_as_MySQL()
3.在app下面的models.py这个文件中定义类
class UserInfo(models.Model): id = models.AutoField(primary_key=True) #在数据库中生成自增的ID主键字段 username = models.CharField(max_length=20) #varchar(20) password = models.CharField(max_length=30) #生成的表:表名UserInfo,表中有三个字段:ID,username,password
4.告诉Django在数据库中生成表,两个命令
1.python manage.py makemigrations #到model.py下查看里面内容的变动,并在migrations文件夹下生成一个变动的记录
2.python manage.py migrate # 到migrations文件夹下查看变动记录,并翻译成SQL语句执行
3.两条命令生成的表中,auth与django开头的表都是内置的表,app前缀开头的就是我们创建的
4.ORM表单的查增删改
1.查
1.类名.objects.all() -->查询数据库中改表的所有数据
2.类名.objects.filter(条件) -->根据给定的条件,取数据库查询,返回的是一个列表
3.类名.objects.get(条件) -->根据条件找到一个对象(找到多个或者没有时会报错)
2.增
1.类名.objects.create()
3.删
1.类名.objects.filter(条件).delete()
2.类名.objects.get(条件).delete()
4改
1.obj = 类名.objects.get(条件)
obj.属性 = '新值'
obj.save()
2.update
类名.objects.filter(条件).update(字段='新值')