【发布时间】:2022-01-21 03:39:40
【问题描述】:
我有史以来第一次尝试将数据从 Spyder 中的数据帧发送到 Azure SQL Server...我认为它称为 Synapse。我在数据库中创建了一个小表,当我运行下面的代码时,我看到了我期望看到的结果。
import pyodbc
server = 'ryan-server.database.windows.net'
database = 'ryan_sql_db'
username = 'UN'
password = 'PW'
driver= '{ODBC Driver 17 for SQL Server}'
with pyodbc.connect('DRIVER='+driver+';SERVER=tcp:'+server+';PORT=1433;DATABASE='+database+';UID='+username+';PWD='+ password) as conn:
with conn.cursor() as cursor:
cursor.execute("SELECT * From Order_Table")
row = cursor.fetchone()
while row:
print (str(row[0]) + " " + str(row[1]))
row = cursor.fetchone()
所以,连接很好。我想我只是停留在将数据帧推送到 Azure 中的 SQL Server 的语法上。我测试了下面的代码。
import pyodbc
server = 'ryan-server.database.windows.net'
database = 'ryan_sql_db'
username = 'UN'
password = 'PW'
driver= '{ODBC Driver 17 for SQL Server}'
conn = pyodbc.connect('DRIVER='+driver+';SERVER=tcp:'+server+';PORT=1433;DATABASE='+database+';UID='+username+';PWD='+ password)
all_data.to_sql('health', conn, if_exists='replace', index=True)
当我运行该代码时,我得到了这个错误。
DatabaseError: Execution failed on sql 'SELECT name FROM sqlite_master WHERE type='table' AND name=?;': ('42S02', "[42S02] [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Invalid object name 'sqlite_master'. (208) (SQLExecDirectW); [42S02] [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Statement(s) could not be prepared. (8180)")
【问题讨论】:
-
您可以使用 ODBC 或 jdbc 连接写入 synapse - 仅供参考 synapse 是一个大规模分布式数据仓库,想想 100 个 SQL 服务器
-
关于您的错误,您需要传递您的登录凭据,第二个看起来像是您尝试连接到 SQL lite 数据库
-
我刚刚更新了我的原始帖子。所以,选择工作正常。 'all_data.to_sql' 抛出了我上面描述的错误。我了解选择查询的光标。我认为没有游标可以将数据框推送到数据库中的表中。
-
引用
sqlite_master的错误消息似乎与任何已发布的代码无关。您能否调用其他引发该错误的东西? -
这很奇怪。我的系统上什么都没有,调用sqllite。
标签: python sql sql-server python-3.x azure