SQL/Python学校计划

SQL/Python学校计划,python,Python,我有一个关于Python脚本的学校项目,该脚本运行SQL查询并将结果输出到文件。。。到目前为止,我已经知道了这一点,希望得到一些反馈,看看这是否正确,或者我是否远离了使用AdobAPI。多谢 import adodbapi # Connect to the SQL DB conn = adodbapi.connect("Provider=SQLDB;SERVER= x.x.x.x ;User Id=user;Password=pass;DATABASE=db database;") curs

我有一个关于Python脚本的学校项目,该脚本运行SQL查询并将结果输出到文件。。。到目前为止,我已经知道了这一点,希望得到一些反馈,看看这是否正确,或者我是否远离了使用AdobAPI。多谢

import adodbapi

# Connect to the SQL DB

conn = adodbapi.connect("Provider=SQLDB;SERVER= x.x.x.x ;User Id=user;Password=pass;DATABASE=db database;")
curs = conn.cursor()

# Execute SQL query test_file.sql"

query = 'test_file'
curs.execute("SELECT test_file")
rows = curs.fetchall()
for row in rows:
    print test_file | test_file.txt


conn.close()
执行SQL查询测试文件。SQL您不是从文件执行SQL查询。您正在执行SQL查询选择测试文件。 SELECT test_文件不是SELECT查询的有效SQL语法。 rows=curs.fetchall;对于行中的行:。。。不是遍历查询所有结果的好方法。 如果查询返回大量行,比如一百万行,那么在循环开始之前,所有一百万行都必须从数据库传输到python程序。如果数据库服务器位于远程计算机上,这可能会非常慢。 在工作开始之前,您的程序必须为整个数据集分配内存。这可能是数百兆字节。 更具Python风格的方法是避免将整个数据集加载到内存中,除非您必须这样做。使用sqlite3,我将编写:

results = curs.execute("SELECT * FROM table_name")
for row in results:
    print (row)
这样一次只加载一行

print test_file | test_file.txt:print语句不支持管道操作符写入文件。Python不是Linux shell!看见 此外,即使此语法正确,也无法将文件名置于“引号”中。如果没有引号,Python会将test_file.txt解释为名为test_file的变量的属性txt。这将导致NameError,因为没有名为test_file的变量,也可能没有AttributeError。 如果您想在不连接网络数据库的情况下测试代码,请使用。这是一个内置的Python库,实现了一个类似于adodbapi的数据库


将来,请尝试运行您的代码,或者至少测试每一行代码是否符合您的期望。在解释器中尝试打印test_file | test_file.txt会给你一个类型错误:不支持的操作数类型:'str'和'str'。

是有问题还是有具体问题?是的,我基本上是在寻找它是否设置正确,因为编译时它都使用虚拟数据库,只是说登录失败,所以我不知道查询是否正确这是我在py的第一次尝试,所以我想寻求一些帮助,如果这一切正常的话,看起来你甚至没有尝试运行它。测试文件将引发名称错误。
import sqlite3
db_conn = sqlite3.connect(":memory:") # connect to temporary database
db_conn.execute("CREATE TABLE colours ( Name TEXT, Red INT, Green INT, Blue INT )")
db_conn.execute("INSERT INTO colours VALUES (?,?,?,?)", ('gray', 128, 128, 128))
db_conn.execute("INSERT INTO colours VALUES (?,?,?,?)", ('blue', 0, 0, 255))
results = db_conn.execute("SELECT * FROM colours")
for row in results:
    print (row)