在Django中鏈接MySQL數據庫(Python3)

個人環境:html

     python3.6,python

     Django2.1.5,mysql

     MySQL8.0.15,sql

     win10,數據庫

     PyCharm,app

    

要求:已經安裝了MySQL數據庫ide

1,安裝pymysqlspa

Django是使用MySQLdb庫來鏈接MySQL數據庫的,。可是MySQLdb不支持Python3,因此使用pymysql代替MySQLdb。
使用pip安裝,而後在項目根目錄的_init_.py文件中輸入:import pymysql   pymysql.install_as_MySQLdb()
 
2,新建數據庫
在命令行中用root登陸MySQL,並輸入:create database db_name default charset = utf8;
 
3,配置鏈接參數
在項目根目錄的settings.py文件中的DATABASES參數中設置{NAME(庫名), USER(登陸用戶), PASSWORD(用戶密碼), HOST(主機), PORT(端口號)},並把ENGINE改成MySQL。
如圖:

 

 
4,設置模型(表)
Django自帶了ORM,只須要在app目錄的models.py文件中定義表的字段便可(例如:name = models.CharField(max_lenght=30) ),字段定義在繼承了models.Model的類中。
設置表名:在該類中添加特殊類:class Meta: db_table = 'User'。注意是在類中。
如圖:注意必定要加第二行,其中ShenDeng爲你的項目名。

 

 
5,同步到數據庫(生成表)
1,在命令行中:python manage.py makemigrations    # 生成數據庫同步腳本。  # 在這一步可能會報錯,解決方法在下面第6步。
2,在命令行中:python manage.py migrate   # 同步數據庫。
 
6,錯誤(拒絕訪問):pymysql.err.OperationalError: (1045, "Access denied for user 'root'@'localhost')
錯誤緣由:因爲MySQL的root用戶默認只能由本地主機(即: localhost)訪問,因此經過pymysql遠程訪問時會拒絕訪問。
解決方法1:更改root用戶的密碼認證方式。在cmd中登陸MySQL,並輸入:alter user 'root'@'localhost' identified with mysql_native_password by 123456;
解決方法2:受權root用戶遠程登陸。grant all on *.* to 'root'@'%' identified by 123456;
上面兩種方法均可以,完成後重複步驟5便可。
 

 7,驗證是否成功( 在cmd中):命令行

       1,用root登陸:mysql> mysql -u root -p; 輸入密碼。htm

       2,查看錶是否存在:mysql> use <數據庫名>;

                                       mysql> show tables;

      ps: 通常會有不少表,其餘的暫時不用管,找到咱們要建的表就好了!

8,往表中添加數據:

   新建一個.py文件輸入如下內容而後單獨運行就能夠了。(User爲繼承了models.Model的類)

 

原文出處:https://www.cnblogs.com/shendeng23/p/10433269.html

相關文章
相關標籤/搜索