相关疑难解决方法(0)

使用SQLAlchemy ORM有效地更新数据库

我正在开始一个新的应用程序,并考虑使用ORM - 特别是SQLAlchemy.

假设我的数据库中有一个列'foo',我想增加它.在直接的sqlite中,这很容易:

db = sqlite3.connect('mydata.sqlitedb')
cur = db.cursor()
cur.execute('update table stuff set foo = foo + 1')
Run Code Online (Sandbox Code Playgroud)

我想出了SQLAlchemy SQL-builder的等价物:

engine = sqlalchemy.create_engine('sqlite:///mydata.sqlitedb')
md = sqlalchemy.MetaData(engine)
table = sqlalchemy.Table('stuff', md, autoload=True)
upd = table.update(values={table.c.foo:table.c.foo+1})
engine.execute(upd)
Run Code Online (Sandbox Code Playgroud)

这稍微慢一点,但其中并不多.

这是我对SQLAlchemy ORM方法的最佳猜测:

# snip definition of Stuff class made using declarative_base
# snip creation of session object
for c in session.query(Stuff):
    c.foo = c.foo + 1
session.flush()
session.commit()
Run Code Online (Sandbox Code Playgroud)

这是正确的,但它只需要不到其他两个方法的五十倍.我认为这是因为它必须将所有数据带入内存才能使用它.

有没有办法使用SQLAlchemy的ORM生成有效的SQL?或者使用任何其他python ORM?或者我应该回去手工编写SQL?

python orm sqlalchemy

107
推荐指数
4
解决办法
14万
查看次数

Psycopg2,Postgresql,Python:批量插入的最快方法

我正在寻找将数百万个元组批量插入数据库的最有效方法.我正在使用Python,PostgreSQL和psycopg2.

我创建了一个很长的郁金香列表,应该插入到数据库中,有时使用几何修饰符Simplify.

这种天真的方式是使用字符串格式化INSERT语句列表,但我还读到了其他三种方法:

  1. 使用pyformat绑定样式进行参数化插入
  2. executemany在元组列表中使用,和
  3. 使用将结果写入文件并使用COPY.

似乎第一种方式是最有效的,但我很感激您的见解和代码片段告诉我如何正确地做到这一点.

python postgresql psycopg2

40
推荐指数
5
解决办法
3万
查看次数

使用sqlalchemy将csv文件加载到数据库中

我正在尝试学习用Python编程.我想把csv文件放到数据库中.使用它是个好主意

python database sqlalchemy

27
推荐指数
4
解决办法
3万
查看次数

标签 统计

python ×3

sqlalchemy ×2

database ×1

orm ×1

postgresql ×1

psycopg2 ×1