gpt4 book ai didi

python - 使用核心 SQLAlchemy 插入和更新

转载 作者:太空狗 更新时间:2023-10-29 19:32:25 28 4
gpt4 key购买 nike

我有一个没有元数据或 orm 类的数据库(该数据库已经存在)。

我设法让选择的东西工作:

from sqlalchemy.sql.expression import ColumnClause
from sqlalchemy.sql import table, column, select, update, insert
from sqlalchemy.ext.declarative import *
from sqlalchemy.orm import sessionmaker
from sqlalchemy import create_engine
import pyodbc

db = create_engine('mssql+pyodbc://pytest')
Session = sessionmaker(bind=db)
session = Session()

list = []
list.append (column("field1"))
list.append (column("field2"))
list.append (column("field3"))

s = select(list)
s.append_from('table')
s.append_whereclause("field1 = 'abc'")
s = s.limit(10)

result = session.execute(s)
out = result.fetchall()

print(out)

到目前为止一切顺利。

让更新/插入正常工作的唯一方法是执行原始查询,例如:

session.execute(<Some sql>)

我想这样做,这样我就可以用它来制作一个类:

u = Update("table")
u.Set("file1","some value")
u.Where(<some conditon>)

seasion.execute(u)

尝试过(这只是我尝试过的方法之一):

i = insert("table")
v = i.values([{"name":"name1"}, {"name":"name2"}])

u = update("table")
u = u.values({"name": "test1"})

我无法让它执行:

session.execute(i)

session.execute(u)

关于如何在不编写 ORM 模型的情况下构建插入或更新的任何建议?

最佳答案

SQLAlchemy Overview可以看出文档中,sqlalchemy 由两层构建:ORMCore。目前,您仅使用 Core 的一些构造并手动构建所有内容。

为了使用 Core,你应该让 SQLAlchemy 知道一些关于你的数据库的元信息,以便它对其进行操作。假设您有一个包含列 field1、field2、field3 和定义的 primary key 的表 mytable,下面的代码应该执行您需要的所有任务:

from sqlalchemy.sql import table, column, select, update, insert

# define meta information
metadata = MetaData(bind=engine)
mytable = Table('mytable', metadata, autoload=True)

# select
s = mytable.select() # or:
#s = select([mytable]) # or (if only certain columns):
#s = select([mytable.c.field1, mytable.c.field2, mytable.c.field3])
s = s.where(mytable.c.field1 == 'abc')
result = session.execute(s)
out = result.fetchall()
print(out)

# insert
i = insert(mytable)
i = i.values({"field1": "value1", "field2": "value2"})
session.execute(i)

# update
u = update(mytable)
u = u.values({"field3": "new_value"})
u = u.where(mytable.c.id == 33)
session.execute(u)

关于python - 使用核心 SQLAlchemy 插入和更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21206869/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com