我想稍微离开PHP并学习Python。为了使用Python进行Web开发,我需要一个框架来帮助模板化和其他事情。
我有一个非生产服务器,用于测试所有的Web开发内容。它是一个Debian 7.1 LAMP堆栈,它运行MariaDB而不是常见的MySQL服务器包。
昨天我安装了Django并创建了我的第一个名为 firstweb 的项目。我还没有改变任何设置。
这是我的第一个大混乱。在教程中,我跟着安装了Django的人,启动了他的第一个项目,重新启动了Apache,Django从此开始工作。他去了他的浏览器,没有问题就去了Django默认页面。
但是,我必须进入我的firstweb文件夹并运行
python manage.py runserver myip:port
它有效。没问题。但是我想知道它是否应该像这样工作,如果这会引起问题呢?
我的第二个问题是我想要设置它以便它使用我的MySQL数据库。我进入/ firstweb / firstweb下的settings.py,我看到ENGINE和NAME,但我不知道该放什么。
然后在USER,PASSWORD和HOST区域是我的数据库及其凭据?如果我使用 localhost ,我可以将 localhost 放入HOST区域吗?
答案 0 :(得分:268)
MySQL support很容易添加。在DATABASES
字典中,您将有一个这样的条目:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'DB_NAME',
'USER': 'DB_USER',
'PASSWORD': 'DB_PASSWORD',
'HOST': 'localhost', # Or an IP Address that your DB is hosted on
'PORT': '3306',
}
}
从Django 1.7开始,您还可以选择使用MySQL option files。您可以通过设置DATABASES
数组来完成此操作:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'OPTIONS': {
'read_default_file': '/path/to/my.cnf',
},
}
}
您还需要使用上面的类似设置创建/path/to/my.cnf
文件
[client]
database = DB_NAME
host = localhost
user = DB_USER
password = DB_PASSWORD
default-character-set = utf8
使用这种在Django 1.7中连接的新方法,了解订单连接是很重要的:
1. OPTIONS.
2. NAME, USER, PASSWORD, HOST, PORT
3. MySQL option files.
换句话说,如果在OPTIONS中设置数据库的名称,这将优先于NAME,后者将覆盖MySQL选项文件中的任何内容。
如果您只是在本地计算机上测试应用程序,则可以使用
python manage.py runserver
添加ip:port
参数允许您自己以外的计算机访问您的开发应用程序。准备好部署应用程序后,我建议您查看Deploying Django
Mysql默认字符集通常不是utf-8,因此请确保使用此sql创建数据库:
CREATE DATABASE mydatabase CHARACTER SET utf8 COLLATE utf8_bin
如果您使用Oracle's MySQL connector,则ENGINE
行应如下所示:
'ENGINE': 'mysql.connector.django',
请注意,您首先需要在操作系统上安装mysql。
brew install mysql (MacOS)
此外,mysql客户端软件包已更改为python 3(MySQL-Client
仅适用于python 2)
pip3 install mysqlclient
答案 1 :(得分:25)
首先请运行以下命令来安装python依赖项,否则python runserver命令将抛出错误。
sudo apt-get install libmysqlclient-dev
sudo pip install MySQL-python
然后配置#Andy定义的settings.py文件,最后执行:
python manage.py runserver
玩得开心!! !!
答案 2 :(得分:14)
如上所述,您可以先从https://www.apachefriends.org/download.html轻松安装xampp 然后按照以下说明操作:
http://localhost:80
,数据库位于port 3306
,PhpMyadmin位于http://localhost/phpmyadmin/
编辑您的settings.py
文件,如:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'DB_NAME',
'HOST': '127.0.0.1',
'PORT': '3306',
'USER': 'root',
'PASSWORD': '',
}}
在virtualenv中安装以下软件包(如果你在virtualenv上使用django,这是更优选的):
sudo apt-get install libmysqlclient-dev
pip install MySQL-python
就是这样!!您已经以非常简单的方式使用MySQL配置了Django。
现在运行你的Django项目:
python manage.py migrate
python manage.py runserver
答案 3 :(得分:13)
如果您使用的是python3.x,请运行以下命令
pip install mysqlclient
然后更改setting.py,如
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'DB',
'USER': 'username',
'PASSWORD': 'passwd',
}
}
答案 4 :(得分:8)
实际上,不同的环境有很多问题,python版本等等。您可能还需要安装python开发文件,因此要强行使用'安装我将运行所有这些:
sudo apt-get install python-dev python3-dev
sudo apt-get install libmysqlclient-dev
pip install MySQL-python
pip install pymysql
pip install mysqlclient
你应该好好接受已接受的答案。如果这对您很重要,可以删除不必要的包裹。
答案 5 :(得分:5)
运行这些命令
sudo apt-get install python-dev python3-dev
sudo apt-get install libmysqlclient-dev
pip install MySQL-python
pip install pymysql
pip install mysqlclient
然后配置settings.py,如
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'django_db',
'HOST': '127.0.0.1',
'PORT': '3306',
'USER': 'root',
'PASSWORD': '123456',
}
}
享受mysql连接
答案 6 :(得分:4)
Andy的答案很有帮助,但是如果您担心在django设置中暴露数据库密码,我建议在mysql连接上关注django官方配置:https://docs.djangoproject.com/en/1.7/ref/databases/
在此引用为:
# settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'OPTIONS': {
'read_default_file': '/path/to/my.cnf',
},
}
}
# my.cnf
[client]
database = NAME
user = USER
password = PASSWORD
default-character-set = utf8
替换' HOST':' 127.0.0.1'在设置中,只需将其添加到my.cnf:
# my.cnf
[client]
database = NAME
host = HOST NAME or IP
user = USER
password = PASSWORD
default-character-set = utf8
另一个有用的选项是为django设置存储引擎,你可能需要在你的setting.py中找到它:
'OPTIONS': {
'init_command': 'SET storage_engine=INNODB',
}
答案 7 :(得分:3)
settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'django',
'USER': 'root',
'PASSWORD': '*****',
'HOST': '***.***.***.***',
'PORT': '3306',
'OPTIONS': {
'autocommit': True,
},
}
}
然后:
python manage.py migrate
如果成功将生成这些表:
auth_group
auth_group_permissions
auth_permission
auth_user
auth_user_groups
auth_user_user_permissions
django_admin_log
django_content_type
django_migrations
django_session
你可以使用mysql。
这是一个展示示例,测试Django版本1.11.5: Django-pool-showcase
答案 8 :(得分:3)
mysqlclient
sudo pip3 install mysqlclient
如果出现错误:
命令“ python setup.py egg_info”失败,错误代码为1 / tmp / pip-install-dbljg4tx / mysqlclient /
然后:
1. sudo apt install libmysqlclient-dev python-mysqldb
2. sudo pip3 install mysqlclient
修改settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'website',
'USER': 'root',
'PASSWORD': '',
'HOST': '127.0.0.1',
'PORT': '3306',
'OPTION': {'init_command':"SET sql_mode='STRICT_TRANS_TABLE',"},
}
}
答案 9 :(得分:1)
按照给定的步骤设置它以使用MySQL数据库:
1) Install MySQL Database Connector :
sudo apt-get install libmysqlclient-dev
2) Install the mysqlclient library :
pip install mysqlclient
3) Install MySQL server, with the following command :
sudo apt-get install mysql-server
4) Create the Database :
i) Verify that the MySQL service is running:
systemctl status mysql.service
ii) Log in with your MySQL credentials using the following command where -u is the flag for declaring your username and -p is the flag that tells MySQL that this user requires a password :
mysql -u db_user -p
iii) CREATE DATABASE db_name;
iv) Exit MySQL server, press CTRL + D.
5) Add the MySQL Database Connection to your Application:
i) Navigate to the settings.py file and replace the current DATABASES lines with the following:
# Database
# https://docs.djangoproject.com/en/2.0/ref/settings/#databases
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'OPTIONS': {
'read_default_file': '/etc/mysql/my.cnf',
},
}
}
...
ii) Next, let’s edit the config file so that it has your MySQL credentials. Use vi as sudo to edit the file and add the following information:
sudo vi /etc/mysql/my.cnf
database = db_name
user = db_user
password = db_password
default-character-set = utf8
6) Once the file has been edited, we need to restart MySQL for the changes to take effect :
systemctl daemon-reload
systemctl restart mysql
7) Test MySQL Connection to Application:
python manage.py runserver your-server-ip:8000
答案 10 :(得分:0)
您必须先创建一个MySQL数据库。然后转到settings.py
文件并使用您的MySQL凭据编辑'DATABASES'
字典:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'YOUR_DATABASE_NAME',
'USER': 'YOUR_MYSQL_USER',
'PASSWORD': 'YOUR_MYSQL_PASS',
'HOST': 'localhost', # Or an IP that your DB is hosted on
'PORT': '3306',
}
}
以下是设置Django以在virtualenv上使用MySQL的完整安装指南:
http://codex.themedelta.com/how-to-install-django-with-mysql-in-a-virtualenv-on-linux/
答案 11 :(得分:0)
这是一个相当古老的问题,但如果有人正在研究任何最新版本的 python 和 django,您可以按照以下步骤操作
Note - Versions
Python version - 3.9.5
Django version - 3.2.4
MySQL server version - 5.7
安装django后,运行以下命令
pip install mysqlclient
在我的 IDE 中,如果我执行 pip list
,这是包和版本的列表
Package Version
----------- -------
asgiref 3.3.4
Django 3.2.4
mysqlclient 2.0.3
pip 21.1.2
pytz 2021.1
setuptools 57.0.0
sqlparse 0.4.1
现在,确保您已经创建了要使用的数据库架构。
在 DATABASES 下你的 django 项目的 settings.py
文件中
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}
到
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'DB_NAME',
'USER': 'DB_USER',
'PASSWORD': 'DB_PASSWORD',
'HOST': 'localhost', # Or an IP Address that your DB is hosted on
'PORT': '3306',
}
}
你应该能够同时运行
python manage.py makemigrations
和
python manage.py migrate
答案 12 :(得分:-1)
python3 -m pip install mysql-connector
pip install mysqlclient
这些命令有助于在Django中正确设置mysql数据库