summaryrefslogtreecommitdiffstats
path: root/lib/sqlalchemy/testing/suite/test_unicode_ddl.py
diff options
context:
space:
mode:
authorxiubuzhe <xiubuzhe@sina.com>2023-10-08 20:59:00 +0800
committerxiubuzhe <xiubuzhe@sina.com>2023-10-08 20:59:00 +0800
commit1dac2263372df2b85db5d029a45721fa158a5c9d (patch)
tree0365f9c57df04178a726d7584ca6a6b955a7ce6a /lib/sqlalchemy/testing/suite/test_unicode_ddl.py
parentb494be364bb39e1de128ada7dc576a729d99907e (diff)
downloadsunhpc-1dac2263372df2b85db5d029a45721fa158a5c9d.tar.gz
sunhpc-1dac2263372df2b85db5d029a45721fa158a5c9d.tar.bz2
sunhpc-1dac2263372df2b85db5d029a45721fa158a5c9d.zip
first add files
Diffstat (limited to 'lib/sqlalchemy/testing/suite/test_unicode_ddl.py')
-rw-r--r--lib/sqlalchemy/testing/suite/test_unicode_ddl.py206
1 files changed, 206 insertions, 0 deletions
diff --git a/lib/sqlalchemy/testing/suite/test_unicode_ddl.py b/lib/sqlalchemy/testing/suite/test_unicode_ddl.py
new file mode 100644
index 0000000..a4ae334
--- /dev/null
+++ b/lib/sqlalchemy/testing/suite/test_unicode_ddl.py
@@ -0,0 +1,206 @@
+# coding: utf-8
+"""verrrrry basic unicode column name testing"""
+
+from sqlalchemy import desc
+from sqlalchemy import ForeignKey
+from sqlalchemy import Integer
+from sqlalchemy import MetaData
+from sqlalchemy import testing
+from sqlalchemy import util
+from sqlalchemy.testing import eq_
+from sqlalchemy.testing import fixtures
+from sqlalchemy.testing.schema import Column
+from sqlalchemy.testing.schema import Table
+from sqlalchemy.util import u
+from sqlalchemy.util import ue
+
+
+class UnicodeSchemaTest(fixtures.TablesTest):
+ __requires__ = ("unicode_ddl",)
+ __backend__ = True
+
+ @classmethod
+ def define_tables(cls, metadata):
+ global t1, t2, t3
+
+ t1 = Table(
+ u("unitable1"),
+ metadata,
+ Column(u("méil"), Integer, primary_key=True),
+ Column(ue("\u6e2c\u8a66"), Integer),
+ test_needs_fk=True,
+ )
+ t2 = Table(
+ u("Unitéble2"),
+ metadata,
+ Column(u("méil"), Integer, primary_key=True, key="a"),
+ Column(
+ ue("\u6e2c\u8a66"),
+ Integer,
+ ForeignKey(u("unitable1.méil")),
+ key="b",
+ ),
+ test_needs_fk=True,
+ )
+
+ # Few DBs support Unicode foreign keys
+ if testing.against("sqlite"):
+ t3 = Table(
+ ue("\u6e2c\u8a66"),
+ metadata,
+ Column(
+ ue("\u6e2c\u8a66_id"),
+ Integer,
+ primary_key=True,
+ autoincrement=False,
+ ),
+ Column(
+ ue("unitable1_\u6e2c\u8a66"),
+ Integer,
+ ForeignKey(ue("unitable1.\u6e2c\u8a66")),
+ ),
+ Column(
+ u("Unitéble2_b"), Integer, ForeignKey(u("Unitéble2.b"))
+ ),
+ Column(
+ ue("\u6e2c\u8a66_self"),
+ Integer,
+ ForeignKey(ue("\u6e2c\u8a66.\u6e2c\u8a66_id")),
+ ),
+ test_needs_fk=True,
+ )
+ else:
+ t3 = Table(
+ ue("\u6e2c\u8a66"),
+ metadata,
+ Column(
+ ue("\u6e2c\u8a66_id"),
+ Integer,
+ primary_key=True,
+ autoincrement=False,
+ ),
+ Column(ue("unitable1_\u6e2c\u8a66"), Integer),
+ Column(u("Unitéble2_b"), Integer),
+ Column(ue("\u6e2c\u8a66_self"), Integer),
+ test_needs_fk=True,
+ )
+
+ def test_insert(self, connection):
+ connection.execute(t1.insert(), {u("méil"): 1, ue("\u6e2c\u8a66"): 5})
+ connection.execute(t2.insert(), {u("a"): 1, u("b"): 1})
+ connection.execute(
+ t3.insert(),
+ {
+ ue("\u6e2c\u8a66_id"): 1,
+ ue("unitable1_\u6e2c\u8a66"): 5,
+ u("Unitéble2_b"): 1,
+ ue("\u6e2c\u8a66_self"): 1,
+ },
+ )
+
+ eq_(connection.execute(t1.select()).fetchall(), [(1, 5)])
+ eq_(connection.execute(t2.select()).fetchall(), [(1, 1)])
+ eq_(connection.execute(t3.select()).fetchall(), [(1, 5, 1, 1)])
+
+ def test_col_targeting(self, connection):
+ connection.execute(t1.insert(), {u("méil"): 1, ue("\u6e2c\u8a66"): 5})
+ connection.execute(t2.insert(), {u("a"): 1, u("b"): 1})
+ connection.execute(
+ t3.insert(),
+ {
+ ue("\u6e2c\u8a66_id"): 1,
+ ue("unitable1_\u6e2c\u8a66"): 5,
+ u("Unitéble2_b"): 1,
+ ue("\u6e2c\u8a66_self"): 1,
+ },
+ )
+
+ row = connection.execute(t1.select()).first()
+ eq_(row._mapping[t1.c[u("méil")]], 1)
+ eq_(row._mapping[t1.c[ue("\u6e2c\u8a66")]], 5)
+
+ row = connection.execute(t2.select()).first()
+ eq_(row._mapping[t2.c[u("a")]], 1)
+ eq_(row._mapping[t2.c[u("b")]], 1)
+
+ row = connection.execute(t3.select()).first()
+ eq_(row._mapping[t3.c[ue("\u6e2c\u8a66_id")]], 1)
+ eq_(row._mapping[t3.c[ue("unitable1_\u6e2c\u8a66")]], 5)
+ eq_(row._mapping[t3.c[u("Unitéble2_b")]], 1)
+ eq_(row._mapping[t3.c[ue("\u6e2c\u8a66_self")]], 1)
+
+ def test_reflect(self, connection):
+ connection.execute(t1.insert(), {u("méil"): 2, ue("\u6e2c\u8a66"): 7})
+ connection.execute(t2.insert(), {u("a"): 2, u("b"): 2})
+ connection.execute(
+ t3.insert(),
+ {
+ ue("\u6e2c\u8a66_id"): 2,
+ ue("unitable1_\u6e2c\u8a66"): 7,
+ u("Unitéble2_b"): 2,
+ ue("\u6e2c\u8a66_self"): 2,
+ },
+ )
+
+ meta = MetaData()
+ tt1 = Table(t1.name, meta, autoload_with=connection)
+ tt2 = Table(t2.name, meta, autoload_with=connection)
+ tt3 = Table(t3.name, meta, autoload_with=connection)
+
+ connection.execute(tt1.insert(), {u("méil"): 1, ue("\u6e2c\u8a66"): 5})
+ connection.execute(tt2.insert(), {u("méil"): 1, ue("\u6e2c\u8a66"): 1})
+ connection.execute(
+ tt3.insert(),
+ {
+ ue("\u6e2c\u8a66_id"): 1,
+ ue("unitable1_\u6e2c\u8a66"): 5,
+ u("Unitéble2_b"): 1,
+ ue("\u6e2c\u8a66_self"): 1,
+ },
+ )
+
+ eq_(
+ connection.execute(
+ tt1.select().order_by(desc(u("méil")))
+ ).fetchall(),
+ [(2, 7), (1, 5)],
+ )
+ eq_(
+ connection.execute(
+ tt2.select().order_by(desc(u("méil")))
+ ).fetchall(),
+ [(2, 2), (1, 1)],
+ )
+ eq_(
+ connection.execute(
+ tt3.select().order_by(desc(ue("\u6e2c\u8a66_id")))
+ ).fetchall(),
+ [(2, 7, 2, 2), (1, 5, 1, 1)],
+ )
+
+ def test_repr(self):
+ meta = MetaData()
+ t = Table(
+ ue("\u6e2c\u8a66"), meta, Column(ue("\u6e2c\u8a66_id"), Integer)
+ )
+
+ if util.py2k:
+ eq_(
+ repr(t),
+ (
+ "Table('\\u6e2c\\u8a66', MetaData(), "
+ "Column('\\u6e2c\\u8a66_id', Integer(), "
+ "table=<\u6e2c\u8a66>), "
+ "schema=None)"
+ ),
+ )
+ else:
+ eq_(
+ repr(t),
+ (
+ "Table('測試', MetaData(), "
+ "Column('測試_id', Integer(), "
+ "table=<測試>), "
+ "schema=None)"
+ ),
+ )