select_from(table_name)中table_name的类型是什么?

时间:2016-06-15 12:41:38

标签: python sql sql-server sqlalchemy

我试图通过遍历它来查看包含许多表的SQL Server中的行数,以查看它们包含多少数据。但是,我不确定select_from()函数会有什么用。因为我目前为表名提供Unicode,所以它引发了

NoInspectionAvailable: No inspection system is available for object of type <type 'unicode'>

我使用的代码是

from sqlalchemy import create_engine
import urllib
from sqlalchemy import inspect
import sqlalchemy
from sqlalchemy import select, func, Integer, Table, Column, MetaData
from sqlalchemy.orm import sessionmaker

connection_string = "DRIVER={SQL Server}; *hidden*"
connection_string = urllib.quote_plus(connection_string) 
connection_string = "mssql+pyodbc:///?odbc_connect=%s" % connection_string

engine = sqlalchemy.create_engine(connection_string)
Session = sessionmaker()
Session.configure(bind=engine) 
session = Session()
connection = engine.connect()
inspector = inspect(engine)

for table_name in inspector.get_table_names():
           print session.query(func.count('*')).select_from(table_name).scalar()

1 个答案:

答案 0 :(得分:1)

通常,它是一个类名,它引用一个描述数据库表的类。

在sqlalchemy文档http://docs.sqlalchemy.org/en/latest/orm/tutorial.html中,他们使用声明性基础创建基类,然后为要查询的每个表创建子类。然后,您将该类名称传递给未引用的select_from函数。

Flask框架提供了一个可以使用的内置基类db.Model,而Django有一个名为models.Model的基类。

或者,您也可以传递查询。我通常使用Flask框架用于python,所以我通常会发起这样的查询:

my_qry = db.session.query(Cust).filter(Cust, Cust.cust == 'lolz')
results = my_qry.all()

另外,如果您决定查看.NET,他们也有很好的ORM。就个人而言,我赞成实体框架,但Linq to SQL也在那里。