【SQLite3】Python利用SQLite3大全

打印 上一主题 下一主题

主题 709|帖子 709|积分 2127


一、python利用sqlite3数据库下令大全

1.1、步骤拆解

1.1.1、Python安装SQLite3插件

Python3自带SQLite3,不用单独安装
1.1.2、导入sqlite3包

  1. import sqlite3
复制代码
  1. import sqlite3
复制代码
1.1.3、连接到SQLite数据库

  1. # 连接到SQLite数据库
  2. # 数据库文件是 test.db,如果文件不存在,会自动在当前目录创建:
  3. conn = sqlite3.connect('test.db')
复制代码
1.1.4、创建一个Cursor

  1. # 创建一个Cursor:
  2. cursor = conn.cursor()
复制代码
1.1.5、实行一条SQL语句,创建user表:

  1. # 执行一条SQL语句,创建user表:
  2. cursor.execute('CREATE TABLE IF NOT EXISTS user (id VARCHAR(20) PRIMARY KEY, name VARCHAR(20))')
复制代码
1.1.6、关闭Cursor

  1. # 关闭Cursor:
  2. cursor.close()
复制代码
1.1.7、实行查询语句,查询user表的全部数据

  1. # 执行查询语句,查询user表的所有数据:
  2. cursor = conn.cursor()
  3. cursor.execute('SELECT * FROM user')
  4. values = cursor.fetchall()
  5. print(values)
复制代码
1.1.8、利用参数化查询,防止SQL注入

  1. # 使用参数化查询,防止SQL注入:
  2. cursor.execute('INSERT INTO user (id, name) VALUES (?, ?)', ('1', 'Michael'))
复制代码
1.1.9、实行更新语句,更新user表的数据

  1. # 执行更新语句,更新user表的数据:
  2. cursor.execute('UPDATE user SET name = ? WHERE id = ?', ('John', '1'))
复制代码
1.1.10、关闭Cursor

  1. # 关闭Cursor:
  2. cursor.close()
复制代码
1.1.11、提交事务

  1. # 提交事务:
  2. conn.commit()
复制代码
1.1.12、关闭Connection

  1. # 关闭Connection:
  2. conn.close()
复制代码
1.2、完备代码

  1. import sqlite3
  2. # 连接到SQLite数据库
  3. # 数据库文件是 test.db,如果文件不存在,会自动在当前目录创建:
  4. conn = sqlite3.connect('test.db')
  5. # 创建一个Cursor:
  6. cursor = conn.cursor()
  7. # 执行一条SQL语句,创建user表:
  8. cursor.execute('CREATE TABLE IF NOT EXISTS user (id VARCHAR(20) PRIMARY KEY, name VARCHAR(20))')
  9. # 关闭Cursor:
  10. cursor.close()
  11. # 执行查询语句,查询user表的所有数据:
  12. cursor = conn.cursor()
  13. cursor.execute('SELECT * FROM user')
  14. values = cursor.fetchall()
  15. print(values)
  16. # 使用参数化查询,防止SQL注入:
  17. cursor.execute('INSERT INTO user (id, name) VALUES (?, ?)', ('1', 'Michael'))
  18. # 执行更新语句,更新user表的数据:
  19. cursor.execute('UPDATE user SET name = ? WHERE id = ?', ('John', '1'))
  20. # 关闭Cursor:
  21. cursor.close()
  22. # 提交事务:
  23. conn.commit()
  24. # 关闭Connection:
  25. conn.close()
复制代码
二、SQLite数据字典

SQLite数据字典是SQLite数据库内部的一个特殊的表,它包罗了数据库元数据,比方表的名字、列的名字以及数据范例等信息。在SQLite中,数据字典通常是通过特定的系统表查询得到的,而不是作为一个单独的特性来访问的。
如果你想要查询SQLite数据库的数据字典信息,你可以利用sqlite_master表来获取数据库中全部表的结构信息。以下是一个查询数据字典的SQL示例:
  1. SELECT name, sql FROM sqlite_master
  2. WHERE type='table';
复制代码
这个查询会返回数据库中全部用户定义表的名字和创建这些表的SQL语句。
  1. SELECT name
  2.   FROM sqlite_master
  3. WHERE type IN ('table','view')
  4.    AND name NOT LIKE 'sqlite_%'
  5. UNION ALL
  6. SELECT name
  7.   FROM sqlite_temp_master
  8. WHERE type IN ('table','view')
  9. ORDER BY 1;
复制代码
三、获取某个特定表的列信息

如果你想要获取某个特定表的列信息,你可以利用PRAGMA table_info()函数,如下所示:
  1. PRAGMA table_info([table_name]);
复制代码
将[table_name]更换为你想要查询的表名。这将返回表中全部列的详细信息,包括列的名字、数据范例等。

四、查询全部表的创建语句

  1. cursor.execute("SELECT name, sql FROM sqlite_master WHERE type='table';")
  2. tables = cursor.fetchall()
  3. for table_name, create_sql in tables:
  4.     print(f"Table: {table_name}")
  5.     print(create_sql)
复制代码
五、查询特定表的列信息

  1. table_name = 'your_table_name'
  2. cursor.execute(f"PRAGMA table_info({table_name});")
  3. columns = cursor.fetchall()
  4. for column in columns:
  5.     print(column)
复制代码
将’table_name’更换为你想要查询的表名。
六、查询SQLite3小工具的版本

  1. select sqlite_version();
复制代码

七、写用户自定义函数,查询SQLite3数据库中的数据

7.1、插入数据函数

  1. def insert_user_info(user_id_string, user_name_string):
  2.     conn = sqlite3.connect('test.db')
  3.     cursor = conn.cursor()
  4.     cursor.execute('INSERT INTO user (id, name) VALUES (?, ?)', (user_id_string, user_name_string))
  5.     conn.commit()
  6.     cursor.close()
复制代码
7.2、查询数据函数

  1. def get_userid_by_username(user_name_string):
  2.     conn = sqlite3.connect('test.db')
  3.     cursor = conn.cursor()
  4.     cursor.execute('SELECT id FROM user where name = ?', (user_name_string,))
  5.     # 检查结果集是否为空
  6.     # result = cursor.fetchone()
  7.     results = cursor.fetchall()
  8.     # 如果result为None,则数据不存在;否则,数据存在。
  9.     if results is None:
  10.         print("数据不存在")
  11.         cursor.close()
  12.         conn.close()
  13.         return None
  14.     else:
  15.         print("数据存在")
  16.         for row in results:
  17.             print(row[0])
  18.         cursor.close()
  19.         conn.close()
  20.         return results
复制代码
7.3、测试

  1. # insert_user_info('4', 'Sarah')
  2. # insert_user_info('5', 'Sarah')
  3. user_name_s = "Sarah"
  4. print(get_userid_by_username(user_name_s))
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

自由的羽毛

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表