SQLAlchemy中的反射不适用于MS SQL Server系统表吗? - python

我试图在MS SQL Server数据库中反映系统表:

from sqlalchemy import engine, create_engine, MetaData, Table 

meta = MetaData() 

url = engine.url.URL(
    "mssql+pyodbc",
    username=credentials["username"],
    password=credentials["pswd"],
    host=credentials["host"],
    database=credentials["db"],
    query=dict(driver="ODBC Driver 13 for SQL Server")
)

e = create_engine(url)
conn = e.connect()
tt = Table("objects", meta, autoload=True, autoload_with=e, schema="sys")
for c in tt.columns:
    print(c.name)

最后,我收到NoSuchTable错误。我试图反映其他系统表(sys.triggers,sys.sql_modules)-相同的结果。对于普通表,此代码可以正常工作,我可以列出列并进行其他查询。我在应用程序中使用的登录名具有“ db_owner”角色,因此具有足够的权限,并且如果我编写这样的内容

for item in conn.execute("select * from sys.triggers"):
    print(item)

它工作正常。

我究竟做错了什么?除了执行原始sql并将结果包装在数据类中之外,还有其他方法可以处理系统表中的数据吗?

参考方案

我试图在MS SQL Server数据库中反映系统视图。在向引擎添加echo ='debug'之后,我意识到SQL Alchemy可以从MSSQL中的INFORMATION_SCHEMA中搜索表并查看元数据。

系统表和视图未在INFORMATION_SCHEMA.TABLES或INFORMATION_SCHEMA.VIEWS中列出。

(我使用的是SQLAlchemy 1.3.5版。)

改进SQL INSERT查询以避免SQL注入 - python

我正在使用pymyql / mysql-connector将消息写入mysql数据库。消息是在mqtt broker的回调(paho.mqtt回调)上处理的。我有4个不同的表,并且根据消息类型,我正在将消息插入数据库。我写了如下的插入查询。这种写法似乎导致sql注入。任何建议如何改善插入查询语句?# callback attached to paho.mqt…

Python uuid4,如何限制唯一字符的长度 - python

在Python中,我正在使用uuid4()方法创建唯一的字符集。但是我找不到将其限制为10或8个字符的方法。有什么办法吗?uuid4()ffc69c1b-9d87-4c19-8dac-c09ca857e3fc谢谢。 参考方案 尝试:x = uuid4() str(x)[:8] 输出:"ffc69c1b" Is there a way to…

局域网上的SQLite - python

我的应用程序使用SQLite数据库进行数据存储。奇怪的是,该数据库应该驻留在某些网络驱动器上,我们将其命名为Z:(Windows XP的“映射网络驱动器”功能)。正在Linux下开发应用程序,并在本地存储数据库。这是一个模块的一部分:import sqlite3 as lite con = lite.connect("base.db") …

使用Python从数据库中提取 - python

我用Python编写了一个小脚本,可以帮助我从数据库中提取数据。这是我的脚本:#!/usr/bin/python3 import pandas as pd from sqlalchemy import create_engine #connect to server mytab = create_engine('mssql+pyodbc://tes…

Python-crontab模块 - python

我正在尝试在Linux OS(CentOS 7)上使用Python-crontab模块我的配置文件如下:{ "ossConfigurationData": { "work1": [ { "cronInterval": "0 0 0 1 1 ?", "attribute&…