| 1820 | |
| 1821 | @testing.combinations(("strings",), ("columns",), ("inspectables",)) |
| 1822 | def test_python_scalar_default(self, key_type): |
| 1823 | metadata = MetaData() |
| 1824 | table = Table( |
| 1825 | "sometable", |
| 1826 | metadata, |
| 1827 | Column("id", Integer, primary_key=True), |
| 1828 | Column("data", String), |
| 1829 | Column("foo", Integer, default=10), |
| 1830 | ) |
| 1831 | |
| 1832 | if key_type == "strings": |
| 1833 | id_, data, foo = "id", "data", "foo" |
| 1834 | elif key_type == "columns": |
| 1835 | id_, data, foo = table.c.id, table.c.data, table.c.foo |
| 1836 | elif key_type == "inspectables": |
| 1837 | id_, data, foo = ( |
| 1838 | ORMExpr(table.c.id), |
| 1839 | ORMExpr(table.c.data), |
| 1840 | ORMExpr(table.c.foo), |
| 1841 | ) |
| 1842 | else: |
| 1843 | assert False |
| 1844 | |
| 1845 | values = [ |
| 1846 | {id_: 1, data: "data1"}, |
| 1847 | {id_: 2, data: "data2", foo: 15}, |
| 1848 | {id_: 3, data: "data3"}, |
| 1849 | ] |
| 1850 | |
| 1851 | checkparams = { |
| 1852 | "id_m0": 1, |
| 1853 | "id_m1": 2, |
| 1854 | "id_m2": 3, |
| 1855 | "data_m0": "data1", |
| 1856 | "data_m1": "data2", |
| 1857 | "data_m2": "data3", |
| 1858 | "foo": None, # evaluated later |
| 1859 | "foo_m1": 15, |
| 1860 | "foo_m2": None, # evaluated later |
| 1861 | } |
| 1862 | |
| 1863 | stmt = table.insert().values(values) |
| 1864 | |
| 1865 | eq_( |
| 1866 | { |
| 1867 | k: v.type._type_affinity |
| 1868 | for (k, v) in stmt.compile( |
| 1869 | dialect=postgresql.dialect() |
| 1870 | ).binds.items() |
| 1871 | }, |
| 1872 | { |
| 1873 | "foo": Integer, |
| 1874 | "data_m2": String, |
| 1875 | "id_m0": Integer, |
| 1876 | "id_m2": Integer, |
| 1877 | "foo_m1": Integer, |
| 1878 | "data_m1": String, |
| 1879 | "id_m1": Integer, |