Python 如何迭代地创建多个表,每个表都以列表元素命名,还可以基于列表进行迭代查询
我想使用for循环以迭代方式创建约1900个表,每个表都以列表元素命名 每个新创建的表将只包含满足简单SQL查询“WHERE Cable_Op=[上面提到的相同列表元素]”的行 本质上,我希望列表中的每个元素都有一个表,该表只包含Cable_Op=相同元素的行 我有一个1900个元素的列表,每个元素都是一个文本字符串 现在,我正在努力Python 如何迭代地创建多个表,每个表都以列表元素命名,还可以基于列表进行迭代查询,python,python-2.7,pyodbc,Python,Python 2.7,Pyodbc,我想使用for循环以迭代方式创建约1900个表,每个表都以列表元素命名 每个新创建的表将只包含满足简单SQL查询“WHERE Cable_Op=[上面提到的相同列表元素]”的行 本质上,我希望列表中的每个元素都有一个表,该表只包含Cable_Op=相同元素的行 我有一个1900个元素的列表,每个元素都是一个文本字符串 现在,我正在努力 cursor = conn.cursor() with open("C:/Python27/COALS_CARS/PROVIDERS.txt") as f: p
cursor = conn.cursor()
with open("C:/Python27/COALS_CARS/PROVIDERS.txt") as f:
providerlist = f.read().splitlines()
for provider in providerlist:
cursor.execute('SELECT UID, COUNTY, STATE, Cable_Op into [provider] from COALS where Cable_Op =provider')
无济于事。在数小时的搜索中,我既没有提到基于列表迭代命名/创建新表,也没有看到基于列表迭代查询
基本上,我想要一个名为“AT&T”的表,其中只有Cable_Op=“AT&T”的值,一个名为“Comcast”的表,其中只有Cable_Op=“Comcast”的值,以此类推(其中AT&T和Comcast是列表元素)
pyodbc允许这样做吗
提前感谢。先问几个问题:
- 这是一次性手术吗?还是每隔一段时间就会运行一次 桌子重新装好了吗
- 不必怀疑其目的,使用循环来 在每个提供程序的基表顶部创建一个视图,然后 数据将是最新的
- 您正在使用什么RDBMS
CREATE TABLE <table name> (<field definitions>)
-- OR --
TRUNCATE TABLE <table name> -- If the table already exist clear out the data
-- Then, load in the data...
INSERT INTO <table name> (<field list>) SELECT <field list> FROM COALS WHERE Cable_Op = <table name>
SELECT <field list> INTO <table name> FROM COALS WHERE cable_op = <table name>
-- will fail if the table already exists
import pyodbc
def main():
serverName = 'DETAIL'
databaseName = 'FS001'
conn = pyodbc.connect('DRIVER={SQL Server};Server=%s;Database=%s;Integrated Security=true;' % (serverName, databaseName))
cursor = conn.cursor()
with open("C:\Data\PROVIDERS.txt") as f:
providerlist = f.read().splitlines()
for provider in providerlist:
cursor.execute("SELECT UID, COUNTY, STATE, Cable_Op into [%s] from COALS where Cable_Op = '%s'" % (provider, provider))
cursor.execute('select * from %s' % 'INFORMATION_SCHEMA.TABLES')
rows = cursor.fetchall()
for row in rows:
print row
if __name__ == '__main__':
main()