https://www.xin3721.com/eschool/pythonxin3721/

pydbclib是一个通用的python关系型数据库操作工具包,使用统一的接口操作各种关系型数据库(如 oracle、mysql、postgres、hive、impala等)进行增删改查,它是对各个python数据库连接驱动包(如sqlalchemy、pymysql、cx_Oracle、pyhive、pyodbc、impala等)的封装,依照python最简原则SQL占位符统一成 ':[name]' 这一种形式,这点和sqlalchemy是一样的

安装

pip3 install pydbclib

简单使用

看下简单的查询示例

from pydbclib importconnect#使用with上下文,可以自动提交,自动关闭连接

with connect("sqlite:///:memory:") as db:

db.execute('create table foo(a integer, b varchar(20))')#统一使用’:[name]'形式的SQL的占位符

db.execute("insert into foo(a,b) values(:a,:b)", [{"a": 1, "b": "one"}]*4)print(db.read("select * from foo").get_one())print(db.read("select * from foo").get_all())print(db.read("select * from foo").to_df())

db.get_table("foo").insert({"a": 2, "b": "two"})print(db.get_table("foo").find_one({"a": 2}))print(db.get_table("foo").find().get_all())print(db.get_table("foo").find().to_df())

查询结果记录是以字典形式展现,向库里写入记录也是字典形式,如果要使用原生元祖形式,查询函数read里添加as_dict=False参数

接口文档

数据库连接,更多常用数据库连接方式参考文章结尾

#connect函数有个driver参数决定你是通过哪个数据库驱动包去连接的#driver参数默认值是sqlalchemy,即通过sqlalchemy驱动包连接数据库

>>> db = pydbclib.connect("sqlite:///:memory:")>>> db = pydbclib.connect(":memory:", driver='sqlite3')#也可以传入驱动包连接对象

>>> importsqlite3>>> db = pydbclib.connect(driver=sqlite3.connect(":memory:"))>>> from sqlalchemy importcreate_engine>>> db = pydbclib.connect(driver=create_engine("sqlite:///:memory:"))

原生SQL接口

1. 使用execute方法执行SQL,和各数据库连接包基本一致,不同点是它既可以单条执行,也可以批量执行(相当于executemany),另外该方法的SQL占位符是':[name]'形式

>>> record = {"a": 1, "b": "one"}>>> db.execute('create table foo(a integer, b varchar(20))')#插入单条记录,结果返回影响行数

>>> db.execute("insert into foo(a,b) values(:a,:b)", record)1

#插入多条记录

>>> db.execute("insert into foo(a,b) values(:a,:b)", [record, record])2

2. 查询数据

#查询结果只返回一条记录

>>> db.read_one("select * from foo")

{'a': 1, 'b': 'one'}#read返回迭代器类型,用get方法获取前几条记录,使用map对每条记录进行数据清洗

>>> db.read("select * from foo").map(lambda x: {f"foo.{k}": v for k,v in x.items()}).get(2)#as_dict=False返回原生元祖记录

>>> db.read("select * from foo", as_dict=False).get(2)

[(1, 'one'), (1, 'one')]#也可以直接for遍历

>>> for r in db.read("select * from foo"):

...print(r)

...

{'a': 1, 'b': 'one'}

{'a': 1, 'b': 'one'}

{'a': 1, 'b': 'one'}#转换成pandas dataframe对象, 前提已经安装了pandas

>>> db.read("select * from foo").to_df()

a b

01one1 1one2 1 one

3. 提交、回滚、关闭连接

>>>db.rollback()>>>db.commit()>>> db.close()

表级别操作的SQL接口封装

1. 插入记录

#插入单条和插入多条,输入参数字典的键值必须和表中字段同名

>>> db.get_table("foo").insert({"a": 1, "b": "one"})1

>>> db.get_table("foo").insert([{"a": 1, "b": "one"}]*10)10

2. 查询记录

#查询字段a=1第一条记录

>>> db.get_table("foo").find_one({"a": 1})

{'a': 1, 'b': 'one'}#也可以直接写成sql条件表达式,其他接口的条件参数类似都可以是表达式

>>> db.get_table("foo").find_one("a=1")

{'a': 1, 'b': 'one'}#查询字段a=1所有记录,find返回迭代器对象同上面read方法

>>> db.get_table("foo").find({"a": 1}).get_all()

[{'a': 1, 'b': 'one'},...{'a': 1, 'b': 'one'}]

3. 更新记录

#将a=1那条记录的b字段值更新为"first"

>>> db.get_table("foo").update({"a": 1}, {"b": "first"})11

>>> db.get_table("foo").find({"a": 1}).get_one()

{'a': 1, 'b': 'first'}

4. 删除记录

#将a=1那条记录删除

>>> db.get_table("foo").delete({"a": 1})11

>>> db.get_table("foo").find({"a": 1}).get_all()

[]

常用数据库连接

1. Common Driver

#使用普通数据库驱动连接,driver参数指定驱动包名称#例如pymysql包driver='pymysql',connect函数其余的参数和driver参数指定的包的创建连接参数一致#连接mysql

db = pydbclib.connect(user="user", password="password", database="test", driver="pymysql")#连接oracle

db = pydbclib.connect('user/password@local:1521/xe', driver="cx_Oracle")#通过odbc方式连接

db = pydbclib.connect('DSN=mysqldb;UID=user;PWD=password', driver="pyodbc")#通过已有驱动连接方式连接

importpymysql

con= pymysql.connect(user="user", password="password", database="test")

db= pydbclib.connect(driver=con)

2. Sqlalchemy Driver

#使用Sqlalchemy包来连接数据库,drvier参数默认为'sqlalchemy'#连接oracle

db = pydbclib.connect("oracle://user:password@local:1521/xe")#连接mysql

db = pydbclib.connect("mysql+pyodbc://:@mysqldb")#通过已有engine连接

from sqlalchemy importcreate_engine

engine= create_engine("mysql+pymysql://user:password@localhost:3306/test")

db= pydbclib.connect(driver=engine)

项目地址pydbclib

https://github.com/taogeYT/pydbclib

python操作数据库教程_python通用数据库操作工具 pydbclib|python基础教程|python入门|python教程...相关推荐

  1. python生成数据库指令_Python学习—数据库操作

    python2中操作数据库:MySQLdb python3中操作数据库:pymysql python接连数据库 1.创建数据库连接: mysql.connect()函数 2.执行数据库操作: 执行数据 ...

  2. python操作windows库_python大佬养成计划----win下对数据库的操作

    数据库 PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中则使用mysqldb. win系统安装mysql,详见链接描述 数据库常见命令 mysql ...

  3. python与数据库连接语句_python 链接数据库语句

    python操作mysql数据库实现增删改查 Python 标准数据库接口为 Python DB-API,Python DB-API为开发人员提供了数据库应用编程接口. Python 数据库接口支持非 ...

  4. python操作自带的SQList数据库

    python连接到SQList数据库以及简单操作 背景了解:  Python就内置了SQLite3,所以,在Python中使用SQLite,不需要安装任何东西,直接使用.Python定义了一套操作数据 ...

  5. python 魔兽世界升级脚本_Python 实现数据库更新脚本的生成方法

    我在工作的时候,在测试环境下使用的数据库跟生产环境的数据库不一致,当我们的测试环境下的数据库完成测试准备更新到生产环境上的数据库时候,需要准备更新脚本,真是一不小心没记下来就会忘了改了哪里,哪里添加了 ...

  6. python自动备份手机_python实现数据库自动备份

    python实现数据库自动备份 设计要求 执行环境centos 7 x64 每天某一个时刻自动执行备份操作,执行时间可调整 数据库备份文件保留在特定目录中,目录路径可设置 自动将当前备份版本发送到指定 ...

  7. Python操作泄露的QQ群数据库

    之前没有一点儿操作数据库的实际经验,python也没有实现过完整的程序.几乎是走一步搜一步,学到的倒也挺多,对数据库没有那么陌生了.遇到的最大问题却是编码问题-- ------------------ ...

  8. oledb vc访问mdb数据库_一个通用数据库操作组件DBUtil(c#)、支持SqlServer、Oracle、Mysql、postgres、SQLITE...

    这是一个.net下操作数据库(结构数据库)的工具类,支持sqlserver.oracle.mysql.postgres.sqlite.access等常见数据库. 注意:它并不是一个orm工具(常见的o ...

  9. python操作mongodb语法_python 操作MongoDB

    安装MongoDB 启动数据库:安装完成指定数据库存放路径 mongod.exe --dbpath c:\data\db 进入目录后运行mongo.exe 成功 创建数据库 >use mydb ...

最新文章

  1. 英语发音规则---发/i:/的字母及字母组合
  2. qt中初始化界面的几种方法
  3. 如何在Web应用里消费SAP Leonardo的机器学习API
  4. 微软MVP张善友告诉你,微服务选型要注意这些地方
  5. uml 类图_UML-类图
  6. 一种全数字实时仿真的安全关键领域解决方案
  7. Spring Boot文档阅读笔记-exception handling–@ExceptionHandler解析与实例
  8. Java方法中数组_Java中数组常用方法的总结
  9. 如何打开苹果Mac触控板的三指拖移功能?
  10. Android FrameWork浅识
  11. mysql水平union_mysql_union操作符
  12. 连文件搜索都不会用,也不自己反省一下?
  13. 输入汉语星期几输出英文c语言程序,c输入1234567,输出英语星期日期
  14. 一文2500字Robot Framework自动化测试框架超强教程
  15. x%3e=y%3e=z的c语言表达式,我的C语学习笔记-C语言教程(三).doc
  16. 云场景实践研究第83期:众安保险
  17. SAP 物料 移动类型
  18. [230502]英语阅读长难句分析|共6个
  19. adb删除图案锁屏密码
  20. 人工智能导论(王万良版)笔记整理

热门文章

  1. 《数据库系统概论》第四版课后习题答案
  2. Redis源码-Set:Redis Set存储原理、Redis Set集合操作命令、Redis Set两种存储底层编码intset+hashtable、Redis Set应用场景
  3. 计算机辅助骨科手术的常用简称,大连理工大学创客:计算机辅助骨科手术提高接骨精准度...
  4. compact紧凑算法思想
  5. html去掉button的默认样式
  6. 软件测试方法比较(给新手)
  7. 远程访问本地mysql
  8. 2个人怎么一起玩军旗游戏_让我们一起玩:建立游戏社区
  9. 传统行业如何“玩”大数据?
  10. 基于动态阈值、灰色世界、镜面法的自动白平衡