SQL Alchemy NameError: имя <table>не определено - PullRequest
1 голос
/ 30 мая 2020

Я не знал, как это назвать, не стесняйтесь редактировать заголовок моего сообщения.

Перед тем как начать, я погуглил и посмотрел здесь , но это не похоже помогите мне.

Мой код:

import pyodbc
import pandas as pd
import numpy as np
import os
import sqlalchemy as sal
from sqlalchemy import create_engine
from sqlalchemy import MetaData
from sqlalchemy import Table, Column, Integer, Numeric, String, ForeignKey, Boolean
##
from datetime import datetime
from sqlalchemy import DateTime
from sqlalchemy import PrimaryKeyConstraint, UniqueConstraint, CheckConstraint
from sqlalchemy import Index
from sqlalchemy import ForeignKeyConstraint
from sqlalchemy import insert
from sqlalchemy.sql import select
from sqlalchemy.sql import func
from sqlalchemy import cast
from sqlalchemy import and_, or_, not_
from sqlalchemy import update, delete
from sqlalchemy import text
##
import urllib

#############################################################
server = 'fake_server'
database = '_Testing_Only'
driver = 'SQL+SERVER+NATIVE+CLIENT+11.0'
trusted_connection='yes'



database_connection =  'mssql+pyodbc://fake_server/' + database + '?trusted_connection=' + trusted_connection + '&driver=' + driver

engine = sal.create_engine(database_connection)
connection=engine.connect()
metadata = MetaData()
print(engine.table_names())

Вот результат моего оператора печати:

['cookies', 'line_items', 'orders', 'testing_sym_keys', 'users']

Затем я попытался запустить этот код:

s = select([cookies])

Я получил следующее сообщение об ошибке:

Traceback (most recent call last):
  File "<pyshell#167>", line 1, in <module>
    s = select([cookies])
NameError: name 'cookies' is not defined

Таблица явно существует, почему я получаю сообщение об ошибке?

1 Ответ

1 голос
/ 30 мая 2020

Проблема в том, что вы не привязываете таблицы в переменной движка к переменной в вашем Python коде.

Попытка запустить собственный SQL запрос формы:

engine = create_engine(database_connection)
metadata = MetaData(engine)
metadata.reflect()

with engine.begin() as conn:
    conn.execute("select * from cookies")

Другое решение, если вы хотите использовать метод выбора, вы можете попробовать это:

engine = create_engine(database_connection)
meta = MetaData(engine).reflect()
table = meta.tables['cookies']

# select * from 'cookies'
select_cookies = select([table])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...