Python 操作数据库

2019-03-22 10:12:35 +08:00
 shimingzhoudf

下面这段代码和使用 ORM 操作有啥区别?

class DbCommonLibaray(object):

def executeQuery(self, sql):
    cursor = connection.cursor()  # 获得一个游标(cursor)对象
    cursor.execute(sql)
    rawData = cursor.fetchall()
    col_names = [desc[0] for desc in cursor.description]
    result = []
    for row in rawData:
        objDict = {}
        # 把每一行的数据遍历出来放到 Dict 中
        for index, value in enumerate(row):
            objDict[col_names[index]] = value
        result.append(objDict)
    return result

def GetDTByPage(tableName, conditions, orderby, selectField="*", pageIndex=1, pageSize=20):
    if not selectField:
        selectField = "*"
    if conditions:
        conditions = "WHERE " + conditions
    sqlStart = str((pageIndex - 1) * pageSize)
    sqlEnd = str(pageIndex * pageSize)
    sqlQuery = "SELECT " + str(selectField) + " FROM " + tableName + " " + str(conditions) + " ORDER BY " + str(
        orderby) + " LIMIT " + str(sqlStart) + ", " + str(sqlEnd)
    returnValue = DbCommonLibaray.executeQuery(None, sqlQuery)
    return returnValue
1470 次点击
所在节点    Python
1 条回复
xpresslink
2019-03-22 10:27:34 +08:00
这段代码就是直接裸 SQL 执行。这个相当于 ORM 的底层。
用这个方式最重的是考虑有 SQL 注入的风险,前面的代码中要有防范措施。

ORM 是接口方式调用,ORM 内部去做 SQL 语句生成,直接就有防止 SQL 注入的机制。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/547290

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX