我正在参加「掘金·启航计划」
Django 默认支持的数据库是sqlite,但是正常我们使用的是mysql,因此我们需要修改一下他的默认配置。
首先,放一下我们的项目根目录结构:
1:修改默认数据库配置
如上图所示:进入blogadmin目录下:
编辑上图红框中的setting.py
bash
复制代码
DATABASES = { 'default': { # 'ENGINE': 'django.db.backends.sqlite3', # django默认支持sqlite # 'NAME': BASE_DIR / 'db.sqlite3', 'ENGINE':'django.db.backends.mysql',#修改mysql支持 'NAME':'django',#数据库名称 'USER':'xxxx',#用户名 'PASSWORD':'xxxxxxxxx',#用户密码 'HOST':'xxxxxxxxxx',#用户连接 'PORT':3306,#数据库端口 } }
2:安装mysql数据库驱动,我这里使用pymysql
复制代码
pip install pymysql
3:配置数据库驱动
在setting.py同级目录下的_init_.py文件中加入以下内容:
ini
复制代码
import pymysql pymysql.version_info = (1, 4, 13, "final", 0) pymysql.install_as_MySQLdb() # 使用pymysql代替mysqldb连接数据库
4:数据库迁移
复制代码
python3 manage.py migrate
迁移成功显示:
sql
复制代码
Operations to perform: Apply all migrations: admin, auth, contenttypes, sessions Running migrations: Applying contenttypes.0001_initial... OK Applying auth.0001_initial... OK Applying admin.0001_initial... OK Applying admin.0002_logentry_remove_auto_add... OK Applying admin.0003_logentry_add_action_flag_choices... OK Applying contenttypes.0002_remove_content_type_name... OK Applying auth.0002_alter_permission_name_max_length... OK Applying auth.0003_alter_user_email_max_length... OK Applying auth.0004_alter_user_username_opts... OK Applying auth.0005_alter_user_last_login_null... OK Applying auth.0006_require_contenttypes_0002... OK Applying auth.0007_alter_validators_add_error_messages... OK Applying auth.0008_alter_user_username_max_length... OK Applying auth.0009_alter_user_last_name_max_length... OK Applying auth.0010_alter_group_name_max_length... OK Applying auth.0011_update_proxy_permissions... OK Applying auth.0012_alter_user_first_name_max_length... OK Applying sessions.0001_initial... OK
5:执行原生sql
有时候raw()方法并不十分好用,很多情况下我们不需要将查询结果映射成模型,或者我们需要执行DELETE、 INSERT以及UPDATE操作。在这些情况下,我们可以直接访问数据库,完全避开模型层。
我们可以直接从django提供的接口中获取数据库连接,然后像使用pymysql模块一样操作数据库。
scss
复制代码
from django.db import connection, connections cursor = connection.cursor() # cursor = connections['default'].cursor() cursor.execute("""SELECT * from auth_user where id = %s""", [1]) ret = cursor.fetchone() from django.db import connection cursor=connection.cursor() # 插入操作 cursor.execute("insert into hello_author(name) values('钱钟书')") # 更新操作 cursor.execute("update hello_author set name='abc' where name='bcd'") # 删除操作 cursor.execute("delete from hello_author where name='abc'") # 查询操作 cursor.execute("select * from hello_author") raw=cursor.fetchone() # 返回结果行游标直读向前,读取一条 cursor.fetchall() # 读取所有
以上大概就是python 链接 mysql(mariadb)数据库的基本的操作。没做太深入的应用,这个后边用到了再说
有好的建议,请在下方输入你的评论。