文章目录
Django 与 MySQL
在Windows平台下,我们可以用Navicat连接MySQL
Navicat新建数据库
利Navicat修改MySQL密码
点击用户
,然后点击需要修改的用户名,便可以出现如下界面,进行修改,保存,然后重新登录
Django,Excel,MySQL概念对比
Django配置使用MySQL
Django的默认数据库(位于setting.py
)如下,我们需要手动修改一下
修改setting.py
如下
DATABASES = {
'default':{
'ENGINE':django.db.backends.mysql',
'NAME':'django',
'HOST':'127.0.0.1',
'PORT':3306,
'USER':'root',
'PASSWORD':'admin'
}
}
之后命令行启动
python manage.py runserver
如果出错,则安装mysqlclient
,安装完成后重新启动,可能还会报错,由于没有对mysql进行初始化,我们需要运行一下命令
python manage.py makemigrations
python manage.py migrate
之后重启,根据输出内容在浏览器中输入相应的IP地址 ,如127.0.0.1:8000
进入后是空表,然后我们输入127.0.0.1:8000/admin
进去管理界面,然后命令行运行
python manage.py createsuperuser
创建管理员账号,然后重启一下
Django字段与MySQL字段对比
Django | MySQL |
---|---|
CharField | varchar |
TextField | longtext |
IntegerField | int |
SQL语句操作MySQL数据库
方法一: 右键数据库名,选择命令行界面
,打开如下图
方法二: 也可以使用一下方法(具有命令提示功能)
创建MySQL账号
使用如下语句
CREATE USER 用户名@'允许IP' IDENTIFIED BY '密码'
允许IP可以是localhost 可以是’%’或者具体IP
修改权限
grant all privileges on *.* to 'root'@localhost
第一个星号表示数据库,第二个星号表示数据表
创建数据库
CREATE DATABASE 数据库名 DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
https://blog.csdn.net/lin_bing110/article/details/80702578
创建表
CREATE TABLE 数据库名.表名称(
字段1 字段类型,
字段2 字段类型
};
例如
CREATE TABLE demo.users(
name varchar(25)
};
或者选择哪个数据库之后,然后再创建
CREATE TABLE users(
name varchar(25)
};
向表中插入新数据
INSERT INTO 表名称(字段名1,字段名2)
VALUES (值1,值2);
UPDATE 表名称
SET 字段名1='字符串',字段名2=数字
WHERE 字段名3 = 值;
删除符合条件的数据
DELETE FROM 表名称
WHERE 字段名1='字符串' AND 字段名2=数字;
MySQLdb的简单使用
from django.shortcuts import render,HttpResponse,redirect
from firstapp.models import People,Article,Comment
from django.template import Context,Template
from firstapp.form import CommentForm
import MySQLdb
def index(request):
conn = MySQLdb.connect(
host = 'localhost',
port = 3306,
user = 'root',
passwd = 'admin',
db = 'django',
charset = 'utf8'
)
cursor = conn.cursor()
cursor.execute("SELECT * FROM firstapp_article")
results = cursor.fetchamany()
articles = []
for result in results:
articles.append(
{
'title':result[1],
'content':result[2],
'like_counts':result[3],
'score':result[4],
'createtime':result[5]
})
context = {}
context["articles"] = articles
return render(request,'index.html',context)
运行服务器,打开浏览器,会直接显示要查询的数据库中的内容
注意:
通过SQL语句查询数据
比较复杂,而model
比较容易
使用pymysql (py3.x)
安装PyMySQL
pip install pymysql
对象类比
访问数据库流程
connection对象
con = pymysql.connect(host = '',
port = '',
user = '',
passwd = '',
db = '',
charset = 'utf-8' )
游标对象cursor
one = cur.fetchone()
print(one)
#获取剩余的3条记录
three = cur.fetchmany(3)
print(three)
# 获取剩余所有记录列表
rows = cur.fetchall()
print("表中剩余所有记录:", rows)
print("number of records:", len(rows))
结果如下
(1, 'aaa')
((2, 'bbb'), (3, 'ccc'), (4, 'ddd'))
表中所有记录: ((5, 'eee'), (6, 'fff'))
number of records: 2
事务回滚
try:
cur.execute();
db.commit()
print("Success")
except Exception as e:
print(e)
db.rollback()
execute执行流程
CRUD操作
增加(Create)、读取查询(Retrieve)、更新(Update)和删除(Delete)
import pymysql
conn = pymysql.connect("IP或者域名","mysql账户名","mysql密码","数据库名")
cur = conn.cursor()
#如果表存在,删除表
cur.execute("DROP TABLE IF EXISTS demo")
#建立表 (列名 类型)
cur.execute('CREATE TABLE demo(num int ,str varchar(20));')
#插入
#两种方式均可,但必须用双引号
cur.execute("INSERT INTO demo VALUES(%d, '%s')" % (1,'aaa'))
cur.execute("INSERT INTO demo VALUES(2,'bbb')")
#更新
cur.execute("UPDATE demo SET str ='ccc' where num = 1")
#查询
cur.execute("SELECT * FROM demo")
# 获取所有记录列表
rows = cur.fetchall()
print("表中所有记录:",rows)
print("number of records:",len(rows))
for i in rows:
print("num=%s,str=%s" % i)
#提交事务,使上述操作生效
conn.commit()
#关闭游标对象
cur.close()
#关闭数据库连接
conn.close()
连接数据库并查询表
import pymysql
# 打开数据库连接,依次为服务器IP,数据库用户名,密码,数据库
db = pymysql.connect("IP","root","password","wordpress")
# 使用cursor()方法获取操作游标
cursor = db.cursor()
sql = 'select * from wp_users'
try:
# 执行SQL语句
cursor.execute(sql)
# 获取所有记录列表
results = cursor.fetchall()
for row in results:
id = row[0]
username = row[1]
email = row[4]
print("id :",id,"username :",username,"email :",email)
except:
print("Error: unable to fetch data")
db.close()