123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206 |
- # 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)"
- ),
- )
|