Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何在Python/Django中正确打开到数据库的连接_Mysql_Django_Design Patterns - Fatal编程技术网

Mysql 如何在Python/Django中正确打开到数据库的连接

Mysql 如何在Python/Django中正确打开到数据库的连接,mysql,django,design-patterns,Mysql,Django,Design Patterns,我想知道如何正确打开到数据库的新连接。当我想从代码中的许多地方创建对数据库的单个查询时,会出现一个问题。例如,一个请求从login.html发送到数据库,第二个从register页面发送到数据库,第三个从index.html发送到gallery。我想,我应该使用一些项目模式吗?你有什么建议吗 我编写了这个类,负责连接mysql数据库。我认为这是非常错误的(我还没有把重点放在验证上,但我知道这一点): 导入mysql.connector 导入配置分析器 类DataBaseConnectionHan

我想知道如何正确打开到数据库的新连接。当我想从代码中的许多地方创建对数据库的单个查询时,会出现一个问题。例如,一个请求从login.html发送到数据库,第二个从register页面发送到数据库,第三个从index.html发送到gallery。我想,我应该使用一些项目模式吗?你有什么建议吗

我编写了这个类,负责连接mysql数据库。我认为这是非常错误的(我还没有把重点放在验证上,但我知道这一点):

导入mysql.connector
导入配置分析器
类DataBaseConnectionHandler(对象):
__DATABASE=“”
user=“”
passwd=“”
host=“”
fileName=“”
dataBaseConnection=“”
def u u init u;(self,fileName=None,host='localhost'):
如果文件名不是“无”:
config_file=configparser.configparser()
config_file.read('shop/config/dbConfig.ini')
数据库:str=config_file.get('DEFAULT','database')
user:str=config_file.get('DEFAULT','user')
密码:str=config_file.get('DEFAULT','password')
self.\uuu DATABASE=数据库
self.user=用户
self.passwd=密码
self.host=host
def connectToDatabase(自):
“”“执行连接并返回到数据库的挂钩”“”
dataBaseConnector=mysql.connector.connect(
host=self.host,
user=self.user,
passwd=self.passwd,
数据库=self.\u数据库
)
如果是数据库连接器!="":
self.dataBaseConnection=数据库连接器
返回self.dataBaseConnection
其他:
self.dataBaseConnection=None
返回self.dataBaseConnection
类注册器

from.databases导入DataBaseConnection
类注册器(对象):
__formName=“”
__formLogin=“”
__formSurrname=“”
__formPasswd=“”
__fromEmail=“”
定义初始化(self、用户名、userSurrname、userLogin、userPassword、userEmail):
self.\uu formName=用户名
self.\u formSurrname=userSurrname
self.\uu formLogin=userLogin
self.\uu formPasswd=userPassword
self.\u fromEmail=用户电子邮件
def createUser(自我):
打印(“[!]创建用户”)
#------与数据库的连接----------------
hook=DataBaseConnection.DataBaseConnectionHandler('shop/config/dbConfig.ini')。connectToDatabase()
myCursor=hook.cursor()
#------正在执行MYSQL查询----------------
#[!]nie szyfruje有一个
sqlstation=“插入用户(登录名、密码、电子邮件、姓名、姓氏)”\
值({}',{}',{}',{}',{}',{}',{}'),
self.\u formPasswd,
self.\u来自电子邮件,
self.\u formName,
自我(自我名称)
myCursor.execute(sqlStatment)
hook.commit()
打印(myCursor.rowcount,“插入记录”)
打印(“[*]执行查询”)
#------紧密连接----------------
hook.close()
我知道Django有自己的连接数据库的方法,但它是为我准备的。我有一些有线错误,这就是为什么我决定使用PyMysql。在不久的将来,我将改变这一点,但现在是学习如何正确编写代码的好时机

编辑:


连接Django ORM时出现了什么错误?我更新了帖子:)我解决了它。解决方案在此页上:。我必须使用:sudo apt get install python dev default libmysqlclient dev安装依赖默认libmysqlclient dev,并在该错误消失后安装。警告:此处使用SQL的方式容易受到SQL注入攻击。如果您必须直接使用MySQL,至少要使用参数化查询。此外,您似乎在复制Django的视图和表单功能——如果您不想学习或使用它们,请使用更简单的框架,如Flask。
PycharmProjects/lovLevelMusic/lovLevelMusic/settings.py changed, reloading.
Watching for file changes with StatReloader
Exception in thread django-main-thread:
Traceback (most recent call last):
  File "/usr/lib/python3.7/threading.py", line 926, in _bootstrap_inner
    self.run()
  File "/usr/lib/python3.7/threading.py", line 870, in run
    self._target(*self._args, **self._kwargs)
  File "/usr/local/lib/python3.7/dist-packages/django/utils/autoreload.py", line 54, in wrapper
    fn(*args, **kwargs)
  File "/usr/local/lib/python3.7/dist-packages/django/core/management/commands/runserver.py", line 109, in inner_run
    autoreload.raise_last_exception()
  File "/usr/local/lib/python3.7/dist-packages/django/utils/autoreload.py", line 77, in raise_last_exception
    raise _exception[1]
  File "/usr/local/lib/python3.7/dist-packages/django/core/management/__init__.py", line 337, in execute
    autoreload.check_errors(django.setup)()
  File "/usr/local/lib/python3.7/dist-packages/django/utils/autoreload.py", line 54, in wrapper
    fn(*args, **kwargs)
  File "/usr/local/lib/python3.7/dist-packages/django/__init__.py", line 24, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "/usr/local/lib/python3.7/dist-packages/django/apps/registry.py", line 114, in populate
    app_config.import_models()
  File "/usr/local/lib/python3.7/dist-packages/django/apps/config.py", line 211, in import_models
    self.models_module = import_module(models_module_name)
  File "/usr/lib/python3.7/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
  File "<frozen importlib._bootstrap>", line 983, in _find_and_load
  File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 728, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "/usr/local/lib/python3.7/dist-packages/django/contrib/auth/models.py", line 2, in <module>
    from django.contrib.auth.base_user import AbstractBaseUser, BaseUserManager
  File "/usr/local/lib/python3.7/dist-packages/django/contrib/auth/base_user.py", line 47, in <module>
    class AbstractBaseUser(models.Model):
  File "/usr/local/lib/python3.7/dist-packages/django/db/models/base.py", line 117, in __new__
    new_class.add_to_class('_meta', Options(meta, app_label))
  File "/usr/local/lib/python3.7/dist-packages/django/db/models/base.py", line 321, in add_to_class
    value.contribute_to_class(cls, name)
  File "/usr/local/lib/python3.7/dist-packages/django/db/models/options.py", line 204, in contribute_to_class
    self.db_table = truncate_name(self.db_table, connection.ops.max_name_length())
  File "/usr/local/lib/python3.7/dist-packages/django/db/__init__.py", line 28, in __getattr__
    return getattr(connections[DEFAULT_DB_ALIAS], item)
  File "/usr/local/lib/python3.7/dist-packages/django/db/utils.py", line 201, in __getitem__
    backend = load_backend(db['ENGINE'])
  File "/usr/local/lib/python3.7/dist-packages/django/db/utils.py", line 110, in load_backend
    return import_module('%s.base' % backend_name)
  File "/usr/lib/python3.7/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "/usr/local/lib/python3.7/dist-packages/django/db/backends/mysql/base.py", line 22, in <module>
    from MySQLdb.constants import CLIENT, FIELD_TYPE                # isort:skip
ImportError: cannot import name 'CLIENT' from 'MySQLdb.constants' (unknown location)
DATABASES = {
   'default': {
       'ENGINE': 'django.db.backends.mysql',
       'NAME': 'dbDjango',
       'USER': 'root',
       'PASSWORD': 'password',
       'HOST': '127.0.0.1',
       'PORT': '3306',
   }
}