Python与MySQL

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字段对比

DjangoMySQL
CharFieldvarchar
TextFieldlongtext
IntegerFieldint

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()
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值