Comments (2)
Cool idea. The problem with this is that upsert can update multiple rows at once if the update criteria are open enough. So there would need to be handling for that case. Still, want to give it a shot?
from dataset.
I just give it a very quick look. Seems that:
- INSERT returns the PK of the row added.
- UPDATE returns
True
if any rows where updated, elseFalse
. - UPSERT returns nothing.
So a consistent solution might be to return the ID on INSERT or a single UPDATE, True
on multiple updates and False
otherwise (on error). This also avoids the problem of having to guess if the return value is a ID or the numbers of rows changed.
As a side note:
try:
# update code
return rp.rowcount > 0
except KeyError:
return False
Why not:
try:
# update code
return rp.rowcount
except KeyError:
return 0
It seems to me we just loose information on the 1st version.
And the 2nd version still works fine in a simple if
check.
But in the upsert
function the casting done in the 1st version would be necessary.
This could look kinda like this: brutus@044dcce
Just a quick try in the on site editor. Couldn't test it from here.
from dataset.
Related Issues (20)
- Increase a value without reading last value
- create_table error when source data has ID field
- SQL Alchemy links in docs broken
- CompileError at `update_many` due to column in a dataset doesn't exist in a db HOT 2
- TypeError: MetaData.__init__() got an unexpected keyword argument 'bind' under sqlalchemy 2.0 HOT 1
- Looking for help: migrating dataset to sqla 2.0.0 HOT 6
- Remove duplicates from a table
- Dataset ignore my primary key HOT 3
- SQLAlchemy examples in the doc
- Parameter passing exception
- dataset wrapper for With statement HOT 3
- bug with alembic=1.11 HOT 1
- Warn if user accidentally uses set as advanced filter?
- Current use of Database.op.add_column() does not work with later versions of alembic HOT 1
- Why doesn't it automatically recycle connections in the connection pool? HOT 1
- Python 3.11 HOT 2
- where HOT 1
- add_column() takes 3 positional arguments but 4 were given HOT 1
- can add query log ? HOT 1
- Can we have a way to filter the select of * items on find and find_one
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from dataset.