连接数据库

连接数据库:

pycharm连接数据库

pycharm连接数据库:
	-pycharm作为数据库的客户端
django连接数据库:
	1,配置文件
   # 默认是SQLit 3 的配置

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}


# MySQL的配置

DATABASES = {
    'default': {
    'ENGINE': 'django.db.backends.mysql',
    'NAME':'dbname',   #注意这里的数据库应该以utf-8编码
    'USER': 'xxx',
    'PASSWORD': 'xxx',
    'HOST': '',
    'PORT': '',
    }
}

# 对于python3的使用者们还需要再加一步操作
# 由于Django内部连接MySQL时使用的是MySQLdb模块,而python3中还无此模块,所以需要使用pymysql来代替
  
2.# 如下设置放置的与project同名的配置的 __init__.py文件中;也可以在应用名下的__init__.py中书写
  
import pymysql
pymysql.install_as_MySQLdb()


# PostgreSQL配置
DATABASES = {
    'default': {
        'NAME': 'app_data',
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'USER': 'XXX',
        'PASSWORD': 'XXX'
    }


# Oracle配置
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.oracle',
        'NAME': 'xe',
        'USER': 'a_user',
        'PASSWORD': 'a_password',
        'HOST': '',
        'PORT': '',
    }
}

ORM:

orm:
    ---对象关系映射
类           表
对象         数据
对象点属性   字段对应的值

功能: 能够让不会数据库操作的人也能够简单方便去操作数据库

缺点:封装程度太高  有时候会出现查询效率偏低的问题
	 复杂的 追速度 需要手动书写sql语句

django中如何操作orm:
	书写模型类
	去应用下的models.py中书写模型类(就是类)

注意:django项目的时候 一个django就对应一个数据库

数据同步

数据同步: 
  对数据库内的数据作出修改后,必须执行数据库迁移(同步)命令

   命令: 
	1.python manage.py makemigrations
	将数据库的修改 记录到小本本上(migrations文件内)
	2.python manage.py migrate
	将修改操作真正的同步到数据库中
    
注意:
	1.上面两条命令必须是成双成对出现

	2.只要修改了models里面跟数据库相关的代码  你就必须重新执行上面两条命令

模型表字段的增删改查:

模型表字段的增删改查:
    
 字段的修改
	直接修改代码 然后执行数据库迁移命令即可(两条一条不能少)
	# 方式1  设置默认值
email = models.EmailField(default='123@qq.com')  # varchar
	# 方式2   允许字段为空
phone = models.BigIntegerField(null=True)
	# 直接在提示中给默认值
gender = models.CharField(max_length=32)
	#字段的删除
直接注释掉对应的字段 然后再执行数据库迁移命令即可(谨慎使用)

注意: 创建字段的数据类型时,主键默认不创建,则django自动创建(引擎为Innodb),主键为id 自增

#创建字段: 
nid = models.AutoField(primary_key=True)
username = models.CharField(max_length=32)  #char 要设置max_length()
email = models.EmailField(default='123@qq.com')
phone = models.BigIntegerField(null=True)
memo = models.TextField()
posted @ 2019-11-22 19:16  black__star  阅读(126)  评论(0编辑  收藏  举报