Python - 用于将数据插入db的MySql访问

时间:2011-03-02 06:37:29

标签: python mysql database django django-models

我创建了一个Django应用程序。现在我尝试使用普通的python脚本将一些数据填充到SQL数据库tabel EmployeeDetails中。但我无法将数据插入数据库。我猜它是因为我的数据库没有与这个外部python脚本连接。我是Python的新手,所以请帮我解决这个问题。这是我的python脚本:

import MySQLdb
    db=MySQLdb.connect("localhost","root","password123","employee")
    def dumpdata():
        userName = 'John'
        designation = 'Software Engineer'
        employeeID = '2312'
        contactNumber = '9495321257'
        project = 'cricket'
        dateOfJoin = '2009-10-10'
        EmployeeDetails(userName,designation,employeeID,contactNumber,project,dateOfJoin).save()

我在Django中的settings.py是:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
        'NAME': 'employee',                      # Or path to database file if using sqlite3.
        'USER': 'root',                      # Not used with sqlite3.
        'PASSWORD': 'password123',                  # Not used with sqlite3.
        'HOST': '',                      # Set to empty string for localhost. Not used with sqlite3.
        'PORT': '',                      # Set to empty string for default. Not used with sqlite3.
    }
}

我最后的需求是将插入代码放在一个循环中,并将所需的数据填充到db中。有人请查看我的代码并帮助我解决这个问题。

2 个答案:

答案 0 :(得分:3)

  1. 不要导入MySQLdb。请改用Django。

  2. 不要直接打扰连接数据库。请改用Django。

  3. 如果要从模型中创建对象,则需要导入它们。如果您正确编写了Django模块,他们将负责导入所有必需的Django模块。

  4. Model.objects.create()是创建新对象并保存的简写。

  5. 这样的事情:

    from myapp.models import EmployeeDetails
    
    def dumpdata():
        userName = 'John'
        designation = 'Software Engineer'
        employeeID = '2312'
        contactNumber = '9495321257'
        project = 'cricket'
        dateOfJoin = '2009-10-10'
        EmployeeDetails.objects.create(userName,designation,employeeID,contactNumber,project,dateOfJoin)
    

    或者这个(使用关键字参数意味着您不必记住创建对象的参数的确切顺序):

    EmployeeDetails.objects.create(
        userName='John',
        designation='Software Engineer',
        employeeID='2312',
        contactNumber='9495321257',
        project='cricket',
        dateOfJoin='2009-10-10')
    

    您必须在Python路径上使用Django包运行它,并正确设置DJANGO_SETTINGS_MODULE环境变量。这样的事情通常对我有用:

    PYTHONPATH=. DJANGO_SETTINGS_MODULE=settings python my_script.py
    

    但是这种调用很大程度上取决于你的系统设置。

答案 1 :(得分:0)

你安装了MySQL support for python吗?

如果您使用的是Windows,最简单的方法是使用precompiled distribution - 这个仅限于Python 2.6。我没有为更高版本的Python发现任何预编译版本。