当前位置 : 主页 > 编程语言 > java >

Python数据库编程

来源:互联网 收集:自由互联 发布时间:2022-06-23
操作数据库的基本流程 使用Python DB API 2.0操作数据库的基本流程如下: 调用connect()方法打开数据库连接,该方法返回数据库连接对象。 通过数据库连接对象打开游标。 使用游标执行

操作数据库的基本流程

使用Python DB API 2.0操作数据库的基本流程如下:

  • 调用connect()方法打开数据库连接,该方法返回数据库连接对象。
  • 通过数据库连接对象打开游标。
  • 使用游标执行SQL语句。
  • 关闭游标。
  • 关闭数据库连接。
  • Created with Raphaël 2.2.0 开始 打开数据库连接 获取游标 执行SQL语句获取数据处理数据 关闭游标 关闭数据库连接 结束

    操作SQLite数据库

    SQLite只是一个嵌入式的数据库引擎,专门适用于在资源有限的设备上进行适量数据的存取。只是一个文件,不需要服务器进程。

    >>> import sqlite3
    >>> sqlite3.apilevel
    '2.0'
    >>> conn = sqlite3.connect('first.db')
    >>> c = conn.cursor()
    >>> c.execute("""
    ... create table user_tb(
    ... _id integer primary key autoincrement,
    ... name text,
    ... pass text,
    ... gender text)""")
    <sqlite3.Cursor object at 0x0000013DF824B880>
    >>> c.execute("""
    ... create table order_tb(
    ... _id integer primary key autoincrement,
    ... item_name text,
    ... item_price real,
    ... item_number real,
    ... user_id inteter,
    ... foreign key(user_id) references user_tb(_id) )""")
    <sqlite3.Cursor object at 0x0000013DF824B880>
    >>> c.close()
    >>> conn.close()

    使用SQLite Expert工具

    ​​SQLite​​​Python数据库编程_数据库连接
    Python数据库编程_数据_02
    Python数据库编程_数据_03

    插入一条数据

    >>> import sqlite3
    >>> conn = sqlite3.connect('first.db')
    >>> c = conn.cursor()
    >>> c.execute('insert into user_tb values(null, ?, ?, ?)', ('孙悟空', '123456', 'male'))
    <sqlite3.Cursor object at 0x0000026AB9C4B880>
    >>> conn.commit()
    >>> c.close()
    >>> conn.close()

    Python数据库编程_数据_04

    插入多条数据

    >>> import sqlite3
    >>> conn = sqlite3.connect('first.db')
    >>> c = conn.cursor()
    >>> c.executemany('insert into user_tb values(null, ?, ?, ?)',
    ... (('sun', '123456', 'male'),
    ... ('bai', '123456', 'female'),
    ... ('zhu','123456','male')))
    <sqlite3.Cursor object at 0x0000024F0EF7B880>
    >>> conn.commit()
    >>> c.close()
    >>> conn.close()

    Python数据库编程_数据_05
    executemany()方法执行一条insert语句, 但调用该方法的第二个参数是一个元组,该元组的每个元素都代表执行该insert语句一次,在执行insert语句时这些元素负责为该语句中的“?”占位符赋值。

    一次update多条语句

    >>> import sqlite3
    >>> conn = sqlite3.connect('first.db')
    >>> c = conn.cursor()
    >>> c.executemany('update user_tb set name=? where _id=?',
    ... (('小孙孙', 2),
    ... ('小白', 3)))
    <sqlite3.Cursor object at 0x0000017F10E4B880>
    >>> c.rowcount
    2
    >>> conn.commit()
    >>> c.close()
    >>> conn.close()

    Python数据库编程_sqlite_06

    查找

    >>> import sqlite3
    >>> conn = sqlite3.connect('first.db')
    >>> c = conn.cursor()
    >>> c.execute('select * from user_tb where _id > ?', (2,))
    <sqlite3.Cursor object at 0x0000026FD697B880>
    >>> for col in (c.description):
    ... print(col[0], end='\t')
    ...
    _id name pass gender >>>
    >>> while True:
    ... row = c.fetchone()
    ... if not row:
    ... break
    ... print(row)
    ...
    (3, '小白', '123456', 'female')
    (4, 'zhu', '123456', 'male')

    通过游标还可以使用:fetchone()、fetchmany(n)、fetchall()来获取查询结果。

    执行SQL脚本

    使用c.executescript()来执行一段SQL脚本。

    创建自定义函数

    使用conn.create_function()注册自定义函数。

    创建聚集函数

    标准的SQL语句提供了:sum(),avg(),count(),max(),min().
    conn.create_aggregate(name, num_params, aggregate_class)
    name:指定自定义聚集函数的名字
    num_params:指定聚集函数所需的参数
    aggregate_class:指定聚集函数的实现类,该类必须实现step(),finalize()方法,step方法对于查询所返回的每条记录各执行一次,finalize方法只在最后执行一次,该方法返回值将作为聚集函数最后的返回值。

    class MinLen:
    def __init__(self):
    pass
    def step(self):
    pass
    def finalize(self):
    passconn.create_aggregate('min_len',1,MinLen)
    c = conn.cursor()
    c.execute('select min_len(pass) from user_tb')

    创建比较函数

    conn.create_collation('sub_cmp', my_collate)
    c = conn.cursor()
    c.execute('select * from user_tb order by pass collate sub_cmp')
    • 参考文献:《疯狂python讲义》李刚 编


    【文章出处:抗攻击防御ddos http://www.558idc.com/krgf.html 复制请保留原URL】
    上一篇:for循环还可以这样?
    下一篇:没有了
    网友评论