Django中执行sql语句有两种方式:
1.object_list=Object.raw('select top 10 from Table where a=1')
如果你使用的是mysql数据库,这里就会出错,因为MySQL不支持top写法,可以换成:select * from table where a=1 limit 10
Paginator(list(object_list),8)#这里需要使用list(),主要是将object_list转换为list类型。不然你会在len(object_list)的时候出错,因为object_list没有这个方法
2.
from django.db import connection cursor = connection.cursor() cursor.execute("SELECT foo FROM bar WHERE baz = %s", [self.baz]) row = cursor.fetchone()
如果你的SQL语句改变了数据库中的数据 -- 比如你使用了 DELETE 或 UPDATE 语句. 你需要调用 connection.commit() 来使你的修改生效. 例子:
from django.db import connection
cursor = connection.cursor()
cursor.execute("DELETE FROM bar WHERE baz = %s", [self.baz])
connection.commit()
打印Django里面的sql语句
from django.db import connection
test.objects.filter(******)
print connection.queries
参考:https://docs.djangoproject.com/en/1.5/topics/db/sql/
Python中使用mysql
import MySQLdb
db = MySQLdb.connect(host = 'localhost', user = 'root', passwd = '123456', db = 'test',port=3306,charset='utf8')
cursor = db.cursor()
cursor.execute(´select * from table´)
rs = cursor.fetchall()
print rs
返回字典类型
import MySQLdb
import MySQLdb.cursors
db = MySQLdb.connect(host = 'localhost', user = 'root', passwd = '123456', db = 'test',port=3306,charset='utf8',cursorclass = MySQLdb.cursors.DictCursor)
cursor = db.cursor()
cursor.execute(´select * from table´)
rs = cursor.fetchall()
print rs