我试图通过遍历它来查看包含许多表的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()
答案 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也在那里。