Comments (4)
Hello, thank you for looking into this.
Have you started from where I left? Just to know if this is one of the differences I had already tackled or if it was ahead.
The problem behind this specific cast is because text is - unexpectedly - passed as unknown, not as text, by psycopg3. The reason is explained here I didn't expect this failure though: I checked why, and it's likely because concat()
arguments are defined as VARIADIC any
in Postgres, not as text.
piro=# \df *.concat
List of functions
Schema | Name | Result data type | Argument data types | Type
------------+--------+------------------+---------------------+------
pg_catalog | concat | text | VARIADIC "any" | func
(1 row)
Most of the time I found these differences I could solve them by making the Django backend create the placeholders with added cast: where the psycopg2 backend generates CONCAT(%s, %s)
the psycopg3 one should generate CONCAT(%s::text, %s::text)
. See this commit for instance: dvarrazzo/django@215d2e3
From a cursory look at my commits in the django repos, things might have changed a bit in psycopg3 since (but not regards this topic: for instance I dropped cursor.callproc()
). So if you find anything unexpected please let me know: I'm happy to give support for this Django driver and I appreciate your interest.
Cheers!
from psycopg.
Thank you for shedding the light on the library behaviour!
I started from dvarrazzo/django@12280d7, which looks like the very last commit in psycopg3 branch.
I created a little PR with proposed CONCAT(%s, %s) -> CONCAT(%s::text, %s::text)
conversion: dvarrazzo/django#1. Hope it helps :)
Cheers!
from psycopg.
Shall we log transformed queries somehow? It would have saved me a lot of time in this case.
Note that you can find query
and params
as attributes on the cursor, if you need them.
from psycopg.
Shall we log transformed queries somehow? It would have saved me a lot of time in this case.
Note that you can find
query
andparams
as attributes on the cursor, if you need them.
Thanks for the tip!
from psycopg.
Related Issues (20)
- Review error swallowing in cancel methods
- Add timeout (with a sensible default) to cancel_safe HOT 2
- Bad decoding of connection cancel error message HOT 2
- Allow sending updated timeout to notifies generator HOT 2
- Segmentation Fault on mac HOT 1
- Suggestion: Replace SELECT 1 with an empty query HOT 2
- Detecting disconnection documentation
- excecute with str argument? HOT 4
- Copy data as fast as possible with a job in the cloud (Big query and Cloud SQL)
- Suggestion: scalar_row to type check at runtime HOT 1
- RuntimeWarning: coroutine 'AsyncCursor.execute' was never awaited HOT 7
- couldn't import psycopg 'c' implementation: No module named 'psycopg_c' HOT 6
- What am I missing regarding ConnectionPool max_lifetime and FastAPI HOT 6
- v = connection.exec_driver_sql("select pg_catalog.version()").scalar() returning bytestring instead of str on Azure Postgres with psycopg>3 and sqlalchemy2 HOT 5
- psycopg-binary SHA256 mismatch HOT 6
- enhancement: Support for pgbouncer SHOW STATS (disabling Extended Query Protocol) HOT 2
- Document how to connect to pgbouncer HOT 1
- Add instructions to build documentation from source HOT 3
- malloc: double free for ptr 0x1243fd200 HOT 4
- Django 4 - ProgrammingError the last operation didn't produce a result HOT 2
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 psycopg.