this takes strings:

print sa.insert(SomeClass).values([
        {"service_id": '12'},
        {"service_id": '34'},
]).compile(dialect=postgresql.dialect())

see the docs and examples at:

https://docs.sqlalchemy.org/en/latest/core/dml.html?highlight=insert%20values#sqlalchemy.sql.expression.Insert.values.params.**kwargs

https://docs.sqlalchemy.org/en/latest/core/dml.html?highlight=insert%20values#sqlalchemy.sql.expression.Insert.values.params.*args



On 06/02/2017 12:16 PM, alexei.bogda...@ytech.by wrote:
Hi, sorry for interfering, but the question is still the same, but with a little bit tricky condition. Please, have a look stackoverflow <https://stackoverflow.com/questions/44333141/python-side-defaults-are-not-invoked-for-each-row-individually-when-using-a-mult>.

On Monday, January 18, 2016 at 5:34:57 PM UTC+3, Michael Bayer wrote:



    On 01/18/2016 02:23 AM, gbr wrote:
     > |I've upgraded from a SQLA version 0.9.x to 1.0.9. Previously, I
    did the
     > following when inserting new records:
     >
     > - Column('flag', Boolean, server_default=sql.expression.false())
    |||I didn't set those columns locally and didn't include them in the
     > insert statement when I wanted them to be False
     > |- Column('date', Date, nullable=False) I didn't set those
    columns as
     > part of the insert when I wanted `date=None`
     > - Column('number', Float, nullable=True) I assigned integer
    values to
     > the column which were implicitly "casted" to floats
     >
     > This behaviour changed which is described here
     >
    
(http://docs.sqlalchemy.org/en/latest/changelog/migration_10.html#python-side-defaults-invoked-for-each-row-invidually-when-using-a-multivalued-insert
    
<http://docs.sqlalchemy.org/en/latest/changelog/migration_10.html#python-side-defaults-invoked-for-each-row-invidually-when-using-a-multivalued-insert>)

     >
     > My question which (perhaps all?) of the above things I did could
    have
     > caused the error message below (with the upgrade). Can I
    reinstate the
     > old behaviour (is there a global SQLA parameter I could
    configure?) or
     > some other way of making sure I fix all places where the above
    bullet
     > points still apply?

    that error should only occur if the list of elements you're passing to
    insert.values() contains inconsistent keys.  As long as each dictionary
    has the same keys, that error won't occur.  The old behavior was a bug,
    we just kept it at 1.1 in case people were relying upon the buggy
    behavior of it forcing NULL for columns where a default generator
    should
    have been used.

    If you think something else is happening, then you need to show me a
    sample of data being passed to values() along with the Table metadata
    that causes this error to ensure there's not some other bug.

    here's the test that illustrates what causes the error:

         def test_server_default_absent_value(self):
             metadata = MetaData()
             table = Table('sometable', metadata,
                           Column('id', Integer, primary_key=True),
                           Column('data', String),
                           Column('foo', Integer,
    server_default=func.foobar()))

             values = [
                 {'id': 1, 'data': 'data1', 'foo': 'plainfoo'},
                 {'id': 2, 'data': 'data2'},
                 {'id': 3, 'data': 'data3', 'foo': 'otherfoo'},
             ]

             assert_raises_message(
                 exc.CompileError,
                 "INSERT value for column sometable.foo is explicitly
    rendered "
                 "as a boundparameter in the VALUES clause; a Python-side
    value or "
                 "SQL expression is required",
                 table.insert().values(values).compile
             )





     >
     > File
    "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/scoping.py",
     > line 150, in do return getattr(self.registry(), name)(*args,
    **kwargs)
     > File
    "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py",
     > line 1034, in execute bind, close_with_result=True).execute(clause,
     > params or {}) File
     >
    "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py",
    line
     > 914, in execute return meth(self, multiparams, params) File
     > "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/elements.py",
     > line 323, in _execute_on_connection return
     > connection._execute_clauseelement(self, multiparams, params) File
     >
    "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py",
    line
     > 1003, in _execute_clauseelement inline=len(distilled_params) > 1)
    File
     > "<string>", line 1, in <lambda> File
     > "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/elements.py",
     > line 494, in compile return self._compiler(dialect, bind=bind, **kw)
     > File
     > "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/elements.py",
     > line 500, in _compiler return dialect.statement_compiler(dialect,
    self,
     > **kw) File
     > "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/compiler.py",
     > line 392, in __init__ Compiled.__init__(self, dialect, statement,
     > **kwargs) File
     > "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/compiler.py",
     > line 190, in __init__ self.string = self.process(self.statement,
     > **compile_kwargs) File
     > "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/compiler.py",
     > line 213, in process return obj._compiler_dispatch(self,
    **kwargs) File
     > "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py",
     > line 81, in _compiler_dispatch return meth(self, **kw) File
     > "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/compiler.py",
     > line 1819, in visit_insert crud_params = crud._get_crud_params(self,
     > insert_stmt, **kw) File
     > "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/crud.py",
    line
     > 113, in _get_crud_params values =
     > _extend_values_for_multiparams(compiler, stmt, values, kw) File
     > "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/crud.py",
    line
     > 503, in _extend_values_for_multiparams for i, row in
     > enumerate(stmt.parameters[1:]) File
     > "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/crud.py",
    line
     > 503, in <genexpr> for i, row in enumerate(stmt.parameters[1:]) File
     > "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/crud.py",
    line
     > 336, in _process_multiparam_default_bind "a Python-side value or SQL
     > expression is required" % c) CompileError: INSERT value for column
     > table.number is explicitly rendered as a boundparameter in the
    VALUES
     > clause; a Python-side value or SQL expression is required|
     >
     > --
     > You received this message because you are subscribed to the Google
     > Groups "sqlalchemy" group.
     > To unsubscribe from this group and stop receiving emails from it,
    send
     > an email to sqlalchemy+...@googlegroups.com <javascript:>
     > <mailto:sqlalchemy+unsubscr...@googlegroups.com <javascript:>>.
     > To post to this group, send email to sqlal...@googlegroups.com
    <javascript:>
     > <mailto:sqlal...@googlegroups.com <javascript:>>.
     > Visit this group at https://groups.google.com/group/sqlalchemy
    <https://groups.google.com/group/sqlalchemy>.
     > For more options, visit https://groups.google.com/d/optout
    <https://groups.google.com/d/optout>.

--
SQLAlchemy -
The Python SQL Toolkit and Object Relational Mapper

http://www.sqlalchemy.org/

To post example code, please provide an MCVE: Minimal, Complete, and Verifiable Example. See http://stackoverflow.com/help/mcve for a full description.
---
You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To unsubscribe from this group and stop receiving emails from it, send an email to sqlalchemy+unsubscr...@googlegroups.com <mailto:sqlalchemy+unsubscr...@googlegroups.com>. To post to this group, send email to sqlalchemy@googlegroups.com <mailto:sqlalchemy@googlegroups.com>.
Visit this group at https://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.

--
SQLAlchemy - The Python SQL Toolkit and Object Relational Mapper

http://www.sqlalchemy.org/

To post example code, please provide an MCVE: Minimal, Complete, and Verifiable 
Example.  See  http://stackoverflow.com/help/mcve for a full description.
--- You received this message because you are subscribed to the Google Groups "sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sqlalchemy+unsubscr...@googlegroups.com.
To post to this group, send email to sqlalchemy@googlegroups.com.
Visit this group at https://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.

Reply via email to