zoukankan      html  css  js  c++  java
  • 数据库-第二节:数据库操作

    操作数据库

    Django配置连接数据库:

    在操作数据库之前,首先先要连接数据库。这里我们以配置MySQL为例来讲解。Django连接数据库,不需要单独的创建一个连接对象。只需要在settings.py文件中做好数据库相关的配置就可以了。示例代码如下:

    DATABASES = {
        'default': {
            # 数据库引擎(是mysql还是oracle等)
            'ENGINE': 'django.db.backends.mysql',
            # 数据库的名字
            'NAME': 'dfz',
            # 连接mysql数据库的用户名
            'USER': 'root',
            # 连接mysql数据库的密码
            'PASSWORD': 'root',
            # mysql数据库的主机地址
            'HOST': '127.0.0.1',
            # mysql数据库的端口号
            'PORT': '3306',
        }
    }
    

    在Django中操作数据库:

    Django中操作数据库有两种方式。第一种方式就是使用原生sql语句操作,第二种就是使用ORM模型来操作。这节课首先来讲下第一种。

    Django中使用原生sql语句操作其实就是使用python db api的接口来操作。如果你的mysql驱动使用的是pymysql,那么你就是使用pymysql来操作的,只不过Django将数据库连接的这一部分封装好了,我们只要在settings.py中配置好了数据库连接信息后直接使用Django封装好的接口就可以操作了。示例代码如下:

    # 使用django封装好的connection对象,会自动读取settings.py中数据库的配置信息
    from django.db import connection
    
    # 获取游标对象
    cursor = connection.cursor()
    # 拿到游标对象后执行sql语句
    cursor.execute("select * from book")
    # 获取所有的数据
    rows = cursor.fetchall()
    # 遍历查询到的数据
    for row in rows:
        print(row)
    

    以上的execute以及fetchall方法都是Python DB API规范中定义好的。任何使用Python来操作MySQL的驱动程序都应该遵循这个规范。所以不管是使用pymysql或者是mysqlclient或者是mysqldb,他们的接口都是一样的。更多规范请参考:https://www.python.org/dev/peps/pep-0249/。

    Python DB API下规范下cursor对象常用接口:

    1. description:如果cursor执行了查询的sql代码。那么读取cursor.description属性的时候,将返回一个列表,这个列表中装的是元组,元组中装的分别是(name,type_code,display_size,internal_size,precision,scale,null_ok),其中name代表的是查找出来的数据的字段名称,其他参数暂时用处不大。

    2. rowcount:代表的是在执行了sql语句后受影响的行数。

    3. close:关闭游标。关闭游标以后就再也不能使用了,否则会抛出异常。

    4. execute(sql[,parameters]):执行某个sql语句。如果在执行sql语句的时候还需要传递参数,那么可以传给parameters参数。示例代码如下:

       cursor.execute("select * from article where id=%s",(1,))
      
    5. fetchone:在执行了查询操作以后,获取第一条数据。

    6. fetchmany(size):在执行查询操作以后,获取多条数据。具体是多少条要看传的size参数。如果不传size参数,那么默认是获取第一条数据。

    7. fetchall:获取所有满足sql语句的数据。

  • 相关阅读:
    POJ 1651:Multiplication Puzzle(区间DP)
    POJ 2955:Brackets(区间DP)
    LightOJ 1422:Halloween Costumes(区间DP入门)
    Gym 101257G:24(尺取)
    Codeforces 777D:Cloud of Hashtags(水题)
    Gym 101257B:2Trees(DFS+思维)
    Codeforces 777C:Alyona and Spreadsheet(思维)
    Codeforces 776C:Molly's Chemicals(思维)
    HDU-3440 House Man
    BZOJ-1202 狡猾的商人
  • 原文地址:https://www.cnblogs.com/sunwenbo/p/13023625.html
Copyright © 2011-2022 走看看