you could use "fullname" but you would need to apply string splitting across 
the dot and then quoting of the individual tokens.

assuming you are using case insensitive identifiers it would be safe to 
generically do the above for all strings if you wanted:

qualified_name = ".".join(
   "`%s`" % token for token in fullname.split(".")
)

SQLAlchemy has quoting facilities also but they are specific to using the 
compiler, so if you aren't using the @compiles extension then you would do 
whatever works to get the quoting you need in your SQL statement.


On Tue, Dec 22, 2020, at 1:25 PM, Benjamin Taub wrote:
> Thank you, Mike. In my case, I am writing a TRUNCATE TABLE statement. I don't 
> think SQLAlchemy provides that so I'm writing it in text and having the 
> engine execute it rather than having SQLAlchemy generate it. Are you 
> recommending, therefore, that I not use the *fullname* attribute for this?
> 
> On Tuesday, December 22, 2020 at 1:17:59 PM UTC-5 Mike Bayer wrote:
>> __
>> the .fullname attribute is not used directly in SQL statements, when a 
>> schema or table name requires quoting the compiler will apply them as needed.
>> 
>> from sqlalchemy import Column 
>> from sqlalchemy import String
>> from sqlalchemy.dialects import mysql
>> from sqlalchemy.ext.declarative import declarative_base
>> from sqlalchemy.orm import Session
>> 
>> Base = declarative_base()
>> 
>> 
>> class SomeTable(Base):
>>     __tablename__ = "3table"
>> 
>>     id = Column(String, primary_key=True)
>> 
>>     __table_args__ = {"schema": "4schema"}
>> 
>> 
>> s = Session()
>> 
>> print(s.query(SomeTable).statement.compile(dialect=mysql.dialect()))
>> 
>> output:
>> 
>> SELECT `4schema`.`3table`.id 
>> FROM `4schema`.`3table`
>> 
>> 
>> 
>> 
>> On Tue, Dec 22, 2020, at 12:35 PM, Benjamin Taub wrote:
>>> schema.py defines a variable fullname for tables as follows:
>>> 
>>> *if *self.schema *is not None*:
>>>     self.fullname = *"%s.%s" *% (self.schema, self.name)
>>> *else*:
>>>     self.fullname = self.name
>>> 
>>> However, this fails for me in some cases, apparently when my table or 
>>> schema name starts with a number. To address this, shouldn't self.fullname 
>>> be surrounded by delimiters (e.g. "`%s`.`%s`")?
>>> 
>>> FWIW, I'm working in MySQL.
>>> 
>>> Thanks!
>>> Ben
>>> 

>>> -- 
>>> 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+...@googlegroups.com.
>>> To view this discussion on the web visit 
>>> https://groups.google.com/d/msgid/sqlalchemy/4c572cf3-992a-4527-a2a9-500bc48170e5n%40googlegroups.com
>>>  
>>> <https://groups.google.com/d/msgid/sqlalchemy/4c572cf3-992a-4527-a2a9-500bc48170e5n%40googlegroups.com?utm_medium=email&utm_source=footer>.
>> 
> 

> -- 
> 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 view this discussion on the web visit 
> https://groups.google.com/d/msgid/sqlalchemy/22f5f83d-0d53-4922-83e0-24ac9af778acn%40googlegroups.com
>  
> <https://groups.google.com/d/msgid/sqlalchemy/22f5f83d-0d53-4922-83e0-24ac9af778acn%40googlegroups.com?utm_medium=email&utm_source=footer>.

-- 
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 view this discussion on the web visit 
https://groups.google.com/d/msgid/sqlalchemy/6ee23436-8fe5-40d6-b2c0-d1d9545b729a%40www.fastmail.com.

Reply via email to