国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【python】Django——連接mysql數(shù)據(jù)庫

這篇具有很好參考價(jià)值的文章主要介紹了【python】Django——連接mysql數(shù)據(jù)庫。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

筆記為自我總結(jié)整理的學(xué)習(xí)筆記,若有錯(cuò)誤歡迎指出喲~

【Django專欄】
Django——django簡(jiǎn)介、django安裝、創(chuàng)建項(xiàng)目、快速上手
Django——templates模板、靜態(tài)文件、django模板語法、請(qǐng)求和響應(yīng)
Django——連接mysql數(shù)據(jù)庫

連接MySQL數(shù)據(jù)庫

ORM(Object-Relational Mapping)是一種編程技術(shù),它允許開發(fā)者使用面向?qū)ο蟮姆绞絹聿僮鲾?shù)據(jù)庫,而不必直接編寫SQL語句。在Django中,ORM是通過Django自帶的django.db.models模塊來實(shí)現(xiàn)的。

  • 創(chuàng)建、修改、刪除數(shù)據(jù)庫中的表【無法創(chuàng)建數(shù)據(jù)庫】
  • 操作表中的數(shù)據(jù)

1.安裝MySQL驅(qū)動(dòng)程序

首先,確保你已經(jīng)安裝了適用于Python的MySQL驅(qū)動(dòng)程序??梢允褂胮ip命令來安裝,例如:

pip install mysqlclient -i https://pypi.tuna.tsinghua.edu.cn/simple

django.db.utils.notsupportederror: mysql 8 or later is required (found 5.5.4,Django,Python學(xué)習(xí),python,數(shù)據(jù)庫,django

2.創(chuàng)建數(shù)據(jù)庫

需要在mysql中完成
django.db.utils.notsupportederror: mysql 8 or later is required (found 5.5.4,Django,Python學(xué)習(xí),python,數(shù)據(jù)庫,django

3.配置settings.py文件

打開你的Django項(xiàng)目中的settings.py文件,找到DATABASES設(shè)置部分,并進(jìn)行如下配置:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'your_database_name',
        'USER': 'your_mysql_username',
        'PASSWORD': 'your_mysql_password',
        'HOST': 'localhost',
        'PORT': '3306',
    }
}

確保將your_database_nameyour_mysql_usernameyour_mysql_password替換為你的MySQL數(shù)據(jù)庫的名稱、用戶名和密碼。

4.django操作表

django操作表語句與mysql語句的關(guān)系

在Django中,操作表的語句與直接在MySQL中執(zhí)行的SQL語句有著密切的關(guān)系。Django的ORM(Object-Relational Mapping)提供了一種Pythonic的方式來操作數(shù)據(jù)庫,它將Python代碼翻譯成對(duì)應(yīng)的SQL語句,并執(zhí)行這些SQL語句以實(shí)現(xiàn)數(shù)據(jù)庫操作。

下面是一些常見的數(shù)據(jù)庫操作,以及它們?cè)贒jango ORM中的對(duì)應(yīng)方式和在MySQL中的原生SQL語句:

創(chuàng)建表

Django ORM:

# 在models.py中定義模型
class UserInfo(models.Model):
name = models.CharField(max_length=64)
password = models.CharField(max_length=128)
age = models.IntegerField()

MySQL原生SQL:

CREATE TABLE application01_userinfo (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(64),
password VARCHAR(128),
age INT

使用Django的管理命令manage.py來執(zhí)行數(shù)據(jù)庫遷移操作,將模型映射到實(shí)際的數(shù)據(jù)庫表。在命令行中執(zhí)行以下命令:

python manage.py makemigrations  # 生成數(shù)據(jù)庫遷移文件
python manage.py migrate  # 應(yīng)用數(shù)據(jù)庫遷移

修改表

新增一個(gè)列
兩種選擇:
django.db.utils.notsupportederror: mysql 8 or later is required (found 5.5.4,Django,Python學(xué)習(xí),python,數(shù)據(jù)庫,django
1) 立即提供一次性默認(rèn)值(將在該列具有null值的所有現(xiàn)有行上設(shè)置)
2) 退出,在models.py中添加一個(gè)默認(rèn)值或允許為空

# 添加默認(rèn)值
salary = models.IntegerField(default=5000)
# 允許為空
salary = models.IntegerField(null=True, blank=True)

django.db.utils.notsupportederror: mysql 8 or later is required (found 5.5.4,Django,Python學(xué)習(xí),python,數(shù)據(jù)庫,django

插入數(shù)據(jù)

# 原生sql語句:insert into application01_userinfo(name, password, age) VALUES ('quanquan', '123', 18)
# UserInfo.objects.create(name=name, password=password, age=age)

def register(request):
	# POST方式
    if request.method == 'POST':
        # 處理表單提交
        name = request.POST.get('name', '')
        password = request.POST.get('password', '')
        age = request.POST.get('age')
        # 構(gòu)造上下文數(shù)據(jù)
        context = {
            'name': name,
            'password': password,
            'age': age,

        }
        # 往數(shù)據(jù)庫插入數(shù)據(jù)
        UserInfo.objects.create(name=name, password=password, age=age)
        # 渲染模板并返回響應(yīng)
        return render(request, 'result.html', context)
    else:
        # 顯示表單頁面
        return render(request, 'register.html')

register.html

<!DOCTYPE html>
<html>
<head>
    <title>輸入信息</title>
</head>
<body>
    <h2>請(qǐng)輸入您的信息</h2>
    <form method="post" action="/register/">
<!--        {% csrf_token %} 是 Django 模板標(biāo)記,用于防止跨站請(qǐng)求偽造(CSRF)攻擊。-->
<!--        Django 要求所有 POST 的表單都要包含這個(gè)標(biāo)記,以確保安全性。-->
        {% csrf_token %}
        <label for="name">姓名:</label>
        <input type="text" id="name" name="name"><br><br>
        <label for="password">密碼:</label>
        <input type="text" id="password" name="password"><br><br>
        <label for="age">年齡:</label>
        <input type="text" id="age" name="age"><br><br>
        <input type="submit" value="提交">
    </form>
</body>
</html>

result.html

<!-- result.html -->
<!DOCTYPE html>
<html>
<head>
    <title>提交結(jié)果</title>
</head>
<body>
    <h2>提交結(jié)果</h2>
    <p>您提交的信息如下:</p>
    <p>姓名:{{ name }}</p>
    <p>密碼:{{ password }}</p>
    <p>年齡:{{ age }}</p>
</body>
</html>

django.db.utils.notsupportederror: mysql 8 or later is required (found 5.5.4,Django,Python學(xué)習(xí),python,數(shù)據(jù)庫,django
django.db.utils.notsupportederror: mysql 8 or later is required (found 5.5.4,Django,Python學(xué)習(xí),python,數(shù)據(jù)庫,django

刪除數(shù)據(jù)

# 刪除數(shù)據(jù)
UserInfo.objects.filter(id=1).delete()
UserInfo.objects.all().delete()

查詢數(shù)據(jù)

# 查詢數(shù)據(jù)
data_list = UserInfo.objects.all()

# data_list = [行對(duì)象,行對(duì)象,...,行對(duì)象]	QuerySet類型

print(data_list)	
# <QuerySet [<UserInfo: UserInfo object (3)>, <UserInfo: UserInfo object (4)>]>

for obj in data_list:
	print(obj.name,obj.password,obj.age)
# 圈圈 123456 20
# 圈圈1 123456 11

更新數(shù)據(jù)

# 更新 id 為 1 的記錄的 name 和 age 字段
UserInfo.objects.filter(id=1).update(name='new_name', age=30)

Django的ORM會(huì)將我們的Python代碼翻譯成對(duì)應(yīng)的SQL語句,并執(zhí)行這些SQL語句以實(shí)現(xiàn)數(shù)據(jù)庫操作。這種方式簡(jiǎn)化了數(shù)據(jù)庫操作的復(fù)雜性,同時(shí)也提高了代碼的可讀性和可維護(hù)性。

5.遷移數(shù)據(jù)庫

使用Django的管理命令manage.py來執(zhí)行數(shù)據(jù)庫遷移操作,將模型映射到實(shí)際的數(shù)據(jù)庫表。在命令行中執(zhí)行以下命令:

python manage.py makemigrations  # 生成數(shù)據(jù)庫遷移文件
python manage.py migrate  # 應(yīng)用數(shù)據(jù)庫遷移

Django 就會(huì)根據(jù)這個(gè)模型創(chuàng)建相應(yīng)的 MySQL 表。假設(shè)你的應(yīng)用名為 application01,模型名為userinfo,那么在 MySQL 數(shù)據(jù)庫中就會(huì)生成一個(gè)名為 application01_userinfo的表
django.db.utils.notsupportederror: mysql 8 or later is required (found 5.5.4,Django,Python學(xué)習(xí),python,數(shù)據(jù)庫,django
django.db.utils.notsupportederror: mysql 8 or later is required (found 5.5.4,Django,Python學(xué)習(xí),python,數(shù)據(jù)庫,django
django.db.utils.notsupportederror: mysql 8 or later is required (found 5.5.4,Django,Python學(xué)習(xí),python,數(shù)據(jù)庫,django

報(bào)錯(cuò)解決

報(bào)錯(cuò):django.db.utils.NotSupportedError: MySQL 8 or later is required (found 5.7.26)
原因:django與mysql版本不兼容
解決方式:
1.升級(jí)mysql版本(SELECT VERSION() 我的版本是5.5.40),有點(diǎn)麻煩不想升級(jí)
2.降低django版本(需要先搜一下版本兼容情況)

pip uninstall django
pip install django==2.0 -i https://pypi.tuna.tsinghua.edu.cn/simple文章來源地址http://www.zghlxwxcb.cn/news/detail-765002.html

到了這里,關(guān)于【python】Django——連接mysql數(shù)據(jù)庫的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • python+django+mysql項(xiàng)目實(shí)踐二(前端及數(shù)據(jù)庫)

    python+django+mysql項(xiàng)目實(shí)踐二(前端及數(shù)據(jù)庫)

    Pycharm 開發(fā)環(huán)境 Django 前端 MySQL 數(shù)據(jù)庫 Navicat 數(shù)據(jù)庫管理 添加模板 在templates下創(chuàng)建 views文件中添加 在setting文件中進(jìn)行配置 在Terminal輸入命令下發(fā)指令

    2024年02月14日
    瀏覽(23)
  • python在Django中,如何使用MySQL數(shù)據(jù)庫進(jìn)行分頁怎么實(shí)現(xiàn)

    在Django中,使用MySQL數(shù)據(jù)庫進(jìn)行分頁是一個(gè)相對(duì)簡(jiǎn)單的任務(wù)。Django的ORM提供了內(nèi)置的分頁功能,你只需要使用Paginator類即可。以下是一個(gè)基本的示例,展示了如何在Django中使用MySQL進(jìn)行分頁: 首先,確保你已經(jīng)安裝了Django和MySQL,并且已經(jīng)配置了Django項(xiàng)目以使用MySQL數(shù)據(jù)庫。

    2024年04月29日
    瀏覽(20)
  • Django-drf項(xiàng)目初始化:跨域、認(rèn)證權(quán)限過濾、static靜態(tài)資源路由,mysql數(shù)據(jù)庫連接,登錄注冊(cè)功能

    碼云地址:https://gitee.com/liuhaizhang/drf-project-initialization 項(xiàng)目目錄結(jié)構(gòu): study_drf? ? ? ? ? ? -home ? ? ? ? -static ? ? ? ? -study_drf ? ? ? ? -util ? ? ? ? -manage.py pip install django #drf基于django pip install djangorestframework #drf框架 pip install mysqlclient #連接數(shù)據(jù)庫 pip install djangorestframewo

    2024年02月03日
    瀏覽(22)
  • python常用庫之pymongo庫(Python操作Mongodb數(shù)據(jù)庫)| Django項(xiàng)目連接MongoDB方式選型(MongoEngine)

    github:https://github.com/mongodb/mongo-python-driver PyMongo用于與Python與MongoDB數(shù)據(jù)庫進(jìn)行交互的工具。bson包是Python的BSON格式 的實(shí)現(xiàn)。Pymongo包是MongoDB的本地Python驅(qū)動(dòng)程序。gridfs包是gridfs 的pymongo實(shí)現(xiàn)。 Pymongo支持MongoDB 3.6、4.0、4.2、4.4、5.0和6.0。 總結(jié):PyMongo 是 MongoDB 與 Django 交互的標(biāo)準(zhǔn)

    2024年02月10日
    瀏覽(26)
  • Django連接數(shù)據(jù)庫

    Django連接數(shù)據(jù)庫

    mysql -u?root -p show databases; 在settings.py文件中進(jìn)行配置和修改 在models.py文件中進(jìn)行修改 創(chuàng)建表 執(zhí)行命令: python manage.py makemigrations python manage.py migrate 條件:在setings保證app已經(jīng)注冊(cè) 刪除表 當(dāng)需要?jiǎng)h除表時(shí),則再models.py中注釋表結(jié)構(gòu),然后重新執(zhí)行命令即可。 修改表 新增列的

    2024年04月27日
    瀏覽(26)
  • Django連接多個(gè)數(shù)據(jù)庫

    為了讓不同業(yè)務(wù)的數(shù)據(jù)分離,落到不同的庫,使用 django 連接多個(gè)數(shù)據(jù)庫。 Django 使用 default 數(shù)據(jù)庫,如果沒有其他選擇 default 可以沒有,但是必須設(shè)置一個(gè)空字典 設(shè)置多個(gè)數(shù)據(jù)庫,需要同步多次。這里比較麻煩。 遷移將會(huì)把所有model的所有表鏡像的遷移到兩個(gè)庫,自帶的指

    2024年02月11日
    瀏覽(25)
  • django如何連接sqlite數(shù)據(jù)庫?

    django如何連接sqlite數(shù)據(jù)庫?

    目錄 一、SQLite數(shù)據(jù)庫簡(jiǎn)介 二、Django連接SQLite數(shù)據(jù)庫 1、配置數(shù)據(jù)庫 2、創(chuàng)建數(shù)據(jù)庫表 三、使用Django ORM操作SQLite數(shù)據(jù)庫 1、定義模型 2、創(chuàng)建對(duì)象 3、查詢對(duì)象 總結(jié) 本文將深入探討如何在Django框架中連接和使用SQLite數(shù)據(jù)庫。我們將介紹SQLite數(shù)據(jù)庫的特點(diǎn),Django的數(shù)據(jù)庫配置,以

    2024年02月06日
    瀏覽(34)
  • django連接本地?cái)?shù)據(jù)庫并執(zhí)行增刪改查

    django連接本地?cái)?shù)據(jù)庫并執(zhí)行增刪改查

    models.py文件根據(jù)數(shù)據(jù)庫表映射出對(duì)應(yīng)的類 在views.py中實(shí)現(xiàn)增刪改查操作: 增: 刪: 改: 查:

    2024年02月20日
    瀏覽(18)
  • django使用mysql數(shù)據(jù)庫

    django使用mysql數(shù)據(jù)庫

    Django開 發(fā)操作數(shù)據(jù)庫比使用pymysql操作更簡(jiǎn)單,內(nèi)部提供了ORM框架。 下面是pymysql 和orm操作數(shù)據(jù)庫的示意圖,pymysql就是mysql的驅(qū)動(dòng),代碼直接操作pymysql ,需要自己寫增刪改查的語句 django 就是也可以使用pymysql、mysqlclient作為驅(qū)動(dòng),但是目前對(duì)mysqlclient的支持更好,在驅(qū)動(dòng)的基礎(chǔ)

    2024年02月14日
    瀏覽(20)
  • django框架——實(shí)現(xiàn)MySQL數(shù)據(jù)庫數(shù)據(jù)的刪除

    在html中的刪除按鈕中綁定js文件中的事件,帶上參數(shù),點(diǎn)擊即觸發(fā)(刪除按鈕不能是a鏈接,不然報(bào)錯(cuò)) js文件中實(shí)現(xiàn)該功能,發(fā)起ajax請(qǐng)求到后端視圖中對(duì)數(shù)據(jù)庫進(jìn)行操作 路由導(dǎo)入 在視圖里面實(shí)現(xiàn)刪除功能

    2024年02月13日
    瀏覽(93)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包