cet.py 1.2 KB

123456789101112131415161718192021222324252627282930313233343536
  1. import plac
  2. import pyodbc
  3. @plac.pos('query', 'SQL Query', type=str)
  4. @plac.pos('mode', '', choices=['in', 'out', 'queryout'])
  5. @plac.pos('csv_file', '', type=str)
  6. @plac.opt('Server', 'Hostname or DSN', type=str)
  7. @plac.opt('database', '', type=str)
  8. @plac.opt('user', '', type=str)
  9. @plac.opt('Password', '', type=str)
  10. @plac.flg('charset', '')
  11. @plac.opt('Codepage', '', type=str)
  12. @plac.opt('errorlog', '', type=str)
  13. def run(query, mode, csv_file, Server='localhost\\GLOBALCUBE', database='master', user='sa', Password='Mffu3011#', charset=False, Codepage='cp65001', errorlog='error.log'):
  14. dsn = f"dsn={Server};uid={user};pwd={Password}"
  15. if mode == 'queryout':
  16. queryout(dsn, query, csv_file, Codepage, errorlog)
  17. return
  18. print('This is madness')
  19. def queryout(dsn, query, csv_file, codepage, errorlog):
  20. try:
  21. conn = pyodbc.connect(dsn)
  22. cursor = conn.cursor()
  23. cursor.execute(query)
  24. with open(csv_file, 'w', encoding=codepage, newline='\r\n') as fwh:
  25. while row := cursor.fetchone():
  26. fwh.write('\t'.join(map(str, row)))
  27. except pyodbc.InterfaceError as e:
  28. print(e.args[1])
  29. if __name__ == '__main__':
  30. plac.call(run)