我正在写一个快速而又脏的脚本,需要与数据库(PG)进行交互。
该脚本是解决现有问题的务实,战术解决方案。但是,我设想脚本会随着时间的推移逐渐演变成一个更“精致”的系统。鉴于它目前正在快速组合(即我没有时间倾注大量的文档),我很想使用psycopg快速而肮脏的路线。
psycopg2的优点(正如我目前所理解的)是:
缺点:
我对SqlAlchemy(缓慢/解释,臃肿,陡峭的学习曲线)的看法是否真实 - 无论如何我可以使用sqlAlchemy以“粗略和准备”的方式使用psycopg - 即:
这样做的任何例子都可用吗?
答案 0 :(得分:47)
SQLAlchemy是一个ORM,psycopg2是一个数据库驱动程序。这些是完全不同的东西:SQLAlchemy 生成 SQL语句,psycopg2将SQL语句发送到数据库。 SQLAlchemy依赖psycopg2或其他数据库驱动程序与数据库通信!
作为一个相当复杂的软件层,SQLAlchemy确实增加了一些开销,但它也大大提高了开发速度,至少在你学习了库之后。 SQLAlchemy是一个优秀的库,它将教你整个ORM概念,但如果你不想生成SQL语句,那么你就不需要SQLAlchemy了。
答案 1 :(得分:4)
与数据库交谈任何人都需要驱动程序。如果您正在使用SQL Plus等客户端进行oracle,MysqlCLI for Mysql,那么它将直接运行查询,并且该客户端随附DBServer包。
使用java,c,python,C#等语言从外部进行通信...我们需要驱动程序来访问该数据库。 psycopg2是从python运行PostgreSQL查询的驱动程序。
SQLAlchemy是与数据库驱动程序不同的ORM。它将为您提供灵活性,因此您可以编写代码而无需任何特定于数据库的标准。 ORM为程序员提供数据库独立性。如果在ORM中编写object.save
,它将检查哪个数据库与该对象关联,它将根据后端数据库生成插入查询。