1. 程式人生 > >django 在自己app下編寫自定義sql

django 在自己app下編寫自定義sql

node2:/django/mysite#cat query_mysql.py 
# !/usr/bin/env python
# -*- coding: utf-8 -*-
from django.db import connection,transaction
import os

os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'
class connect_mysql(object):
  def __init__(self, title, body):
        self.title = title
        self.body = body
  def my_custom_sql(self):
     cursor = connection.cursor()
     cursor.execute("SELECT * FROM blog_blogpost WHERE title = %s and body=%s", [self.title,self.body])
     row = cursor.fetchall()
     return row
a=connect_mysql('中國','臺灣')
for i in a.my_custom_sql():
   print str(i).decode('unicode_escape')
   print type(i)


node2:/django/mysite#python query_mysql.py 
(2L, u'中國', u'臺灣', datetime.datetime(2017, 11, 16, 1, 56, 56))
<type 'tuple'>
(4L, u'中國', u'臺灣', datetime.datetime(2017, 11, 25, 19, 3, 55))
<type 'tuple'>



在這個目錄下可以執行




去blog 目錄下執行:
node2:/django/mysite/blog#python query_mysql.py 
Traceback (most recent call last):
  File "query_mysql.py", line 17, in <module>
    for i in a.my_custom_sql():
  File "query_mysql.py", line 12, in my_custom_sql
    cursor = connection.cursor()
  File "/usr/local/python27/lib/python2.7/site-packages/django/db/__init__.py", line 33, in __getattr__
    return getattr(connections[DEFAULT_DB_ALIAS], item)
  File "/usr/local/python27/lib/python2.7/site-packages/django/db/utils.py", line 208, in __getitem__
    self.ensure_defaults(alias)
  File "/usr/local/python27/lib/python2.7/site-packages/django/db/utils.py", line 176, in ensure_defaults
    conn = self.databases[alias]
  File "/usr/local/python27/lib/python2.7/site-packages/django/utils/functional.py", line 35, in __get__
    res = instance.__dict__[self.name] = self.func(instance)
  File "/usr/local/python27/lib/python2.7/site-packages/django/db/utils.py", line 156, in databases
    self._databases = settings.DATABASES
  File "/usr/local/python27/lib/python2.7/site-packages/django/conf/__init__.py", line 56, in __getattr__
    self._setup(name)
  File "/usr/local/python27/lib/python2.7/site-packages/django/conf/__init__.py", line 41, in _setup
    self._wrapped = Settings(settings_module)
  File "/usr/local/python27/lib/python2.7/site-packages/django/conf/__init__.py", line 110, in __init__
    mod = importlib.import_module(self.SETTINGS_MODULE)
  File "/usr/local/python27/lib/python2.7/importlib/__init__.py", line 37, in import_module
    __import__(name)
ImportError: No module named mysite.settings




node2:/django/mysite/blog#
node2:/django/mysite/blog#cat query_mysql.py 
# !/usr/bin/env python
# -*- coding: utf-8 -*-
from django.db import connection,transaction
import os
import sys
projectpath = '/django/mysite'
if projectpath not in sys.path:   sys.path.append(projectpath)    
os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'
class connect_mysql(object):
  def __init__(self, title, body):
        self.title = title
        self.body = body
  def my_custom_sql(self):
     cursor = connection.cursor()
     cursor.execute("SELECT * FROM blog_blogpost WHERE title = %s and body=%s", [self.title,self.body])
     row = cursor.fetchall()
     return row
a=connect_mysql('中國','臺灣')
for i in a.my_custom_sql():
   print str(i).decode('unicode_escape')
   print type(i)

node2:/django/mysite/blog#python query_mysql.py 
(2L, u'中國', u'臺灣', datetime.datetime(2017, 11, 16, 1, 56, 56))
<type 'tuple'>
(4L, u'中國', u'臺灣', datetime.datetime(2017, 11, 25, 19, 3, 55))
<type 'tuple'>