我创建了一个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中。有人请查看我的代码并帮助我解决这个问题。
答案 0 :(得分:3)
不要导入MySQLdb。请改用Django。
不要直接打扰连接数据库。请改用Django。
如果要从模型中创建对象,则需要导入它们。如果您正确编写了Django模块,他们将负责导入所有必需的Django模块。
Model.objects.create()是创建新对象并保存的简写。
这样的事情:
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发现任何预编译版本。