相关疑难解决方法(0)

SQLAlchemy是否有相当于Django的get_or_create?

我想从数据库中获取一个对象(如果它已经存在)(基于提供的参数),或者如果不存在则创建它.

Django get_or_create(或来源)这样做.SQLAlchemy中是否有等效的快捷方式?

我目前正在明确地写出这样的:

def get_or_create_instrument(session, serial_number):
    instrument = session.query(Instrument).filter_by(serial_number=serial_number).first()
    if instrument:
        return instrument
    else:
        instrument = Instrument(serial_number)
        session.add(instrument)
        return instrument
Run Code Online (Sandbox Code Playgroud)

python django sqlalchemy

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

在sqlalchemy中的Postgresql ON CONFLICT

我读过不少资源(AO.1,2),但我无法得到PostgreSQL关于冲突忽略行为SQLAlchemy的工作.

我用这个被接受的答案作为基础,但它给出了

SAWarning: Can't validate argument 'append_string'; can't locate any SQLAlchemy dialect named 'append'
Run Code Online (Sandbox Code Playgroud)

我已经尝试将postgresql方言添加到@compile子句,重命名我的对象,但它不起作用.我也尝试使用str(insert())+ " ON CONFILCT IGNORE"没有结果.(顺便说一句,这并不奇怪)

如何才能将On CONFLICT IGNORE其添加到插入中?我喜欢建议的解决方案,因为我可以看到自己不想要IGNORE每个人的行为INSERT

PS.使用python 2.7(不介意升级到3.4/3.5),最新的sqlalchemy(1.x)

python sql postgresql sqlalchemy

15
推荐指数
4
解决办法
7777
查看次数

在SQLAlchemy中手动构建SQL查询时如何正确转义字符串?

我使用SQLAlchemy连接到Python中的不同数据库,但没有使用ORM支持,因为由于几个原因无法实现.

主要是我使用像这样的东西构建一个复杂的SQL查询

sql += "AND fieldname = '%s'" % myvar
Run Code Online (Sandbox Code Playgroud)

在我的情况下,不是SQL注入的问题,因为数据总是来自受信任的来源,但即使源是可信的,它也可能包含可能破坏查询的字符',%_.

主要是,我需要逃避它们,我想知道是否存在我可以重复使用的已存在的转义函数.

python sql sqlalchemy escaping

8
推荐指数
2
解决办法
8584
查看次数

SQLAlchemy 核心 - 插入忽略和重复密钥更新

我正在将 SQLAlchemy Core 与 MySQL 数据库一起使用,但很难找到 INSERT IGNORE / DUPLICATE KEY UPDATE 的解决方案。如果有办法处理这个问题,我讨厌在代码中手动编写一次性查询。我发现的大多数解决方案或讨论都围绕 ORM,而不是核心。甚至其中一些是死链接。甚至有可能吗?

python sqlalchemy

8
推荐指数
2
解决办法
1万
查看次数

用pandas DataFrame替换mysql数据库表中的行

Python版本 - 2.7.6

熊猫版 - 0.17.1

MySQLdb版本 - 1.2.5

在我的数据库(PRODUCT)中,我有一个表(XML_FEED).表XML_FEED很大(百万记录)我有一个pandas.DataFrame()(PROCESSED_DF).数据框有数千行.

现在我需要运行它

REPLACE INTO TABLE PRODUCT.XML_FEED
(COL1, COL2, COL3, COL4, COL5),
VALUES (PROCESSED_DF.values)
Run Code Online (Sandbox Code Playgroud)

题:-

有没有办法REPLACE INTO TABLE在熊猫中跑?我已经检查过,pandas.DataFrame.to_sql()但这不是我需要的.我不喜欢XML_FEED在大熊猫中读表,因为它非常庞大.

python mysql replace pandas

5
推荐指数
2
解决办法
4503
查看次数

Python SQLAlchemy ON DUPLICATE KEY UPDATE 具有多条记录

我想使用 SQLAlchemy 提供的 ON DUPLICATE KEY UPDATE 选项来更新插入一堆记录。

这些记录已使用以下命令成功插入Python(其中connection是engine.connect()对象,table是Table对象)

record_list = [{'col1': 'name1', 'col2': '2015-01-31', 'col3': 27.2},
               {'col1': 'name1', 'col2': '2016-01-31', 'col3': 25.2}]
query = insert(table)
results = connection.execute(query, record_list)
Run Code Online (Sandbox Code Playgroud)

查看https://docs.sqlalchemy.org/en/13/dialects/mysql.html#insert-on-duplicate-key-update-upsert上的文档以及许多 SO 问题(包括可能的建议在SQLAlchemy ON DUPLICATE KEY UPDATE的评论下)我尝试了许多不同的示例,但没有一个我可以看到使用此方法通过 upsert 语句处理多个记录。

我正在尝试沿着

query = insert(table).values(record_list)
upsert_query = query.on_duplicate_key_update()
results = connection.execute(upsert_query)
Run Code Online (Sandbox Code Playgroud)

但要么遇到 .on_duplicate_key_update() 要求不能为空的问题,要么 SQL 语法错误。

如果有人成功管理并可以帮助我处理这里的代码结构,我将非常感激。

python mysql sqlalchemy

0
推荐指数
1
解决办法
3950
查看次数

标签 统计

python ×6

sqlalchemy ×5

mysql ×2

sql ×2

django ×1

escaping ×1

pandas ×1

postgresql ×1

replace ×1