展开

关键词

python执行sql文件

最近遇到一对需要执行的sql文件,sql文件内是insert 语句。 代码如下: def execute_sql(conn, cur, path=r"D:\个人"): """执行指定目录下的.sql文件""" os.chdir(path) for each in os.listdir("."): count = 0 #读取行数 sql = "" #拼接的sql语句 if "hisdatastock_replace.sql count = 1 # 当读取完毕文件,不到2000行时,也需对拼接的sql 执行、提交 if sql: cur.execute(sql) conn.commit() 以上execute_sql函数,会默认执行入参path路径下,所有文件名包含“.sql”文件。

1.4K20

Python防止sql注入

看了网上文章,说的都挺好的,给cursor.execute传递格式串和参数,就能防止注入,但是我写了代码,却死活跑不通,怀疑自己用了一个假的python 最后,发现原因可能是不同的数据库,对于字符串的占位定义不同 e.g. '...WHERE name=:name' 'format' ANSI C printf format codes, e.g. '...WHERE name=%s' 'pyformat' Python jetz"}) 可以 再试: rs=c.execute("select * from log where f_UserName=:1 ",["jetz"]) 也可以 看了sqlite对%比较过敏 对于sql

87470
  • 广告
    关闭

    腾讯云服务器买赠活动

    腾讯云服务器买赠活动,低至72元1年,买就送,最长续3个月,买2核送4核、买4核送8核

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    SQL题,Python

    01 问题描述 这个SQL题来源于自己的 Python 学习交流群,具体是这样的:用一条SQL语句查询出每门课都大于80的学生姓名和总成绩。 ? 02 解题思路 本人使用Python来解决这个问题,大概的思路如下: 首先筛选出课程成绩小于等于80的列(布尔选择)。 取这些列的学生姓名的唯一值。

    43720

    Python执行hive sql

    python脚本是用于执行hive脚本的,需要设置hive的可执行环境变量,其实质转化为shell下命令 hive -e 'sql语句’ 的方式执行,然后把结果重定向到控制台显示。 /usr/bin/python #-*-coding:utf-8 -*- import subprocess import traceback sql = """ # 书写hql脚本 ; """ cmd = 'hive -e """'+sql.replace('"', "\'")+'"""' print cmd try: p = subprocess.Popen(cmd, shell=True /usr/bin/python #-*-coding:utf-8 -*- import subprocess import traceback sql = """ select * from app_tianhe_zym_item_reason_dtl_da where order_dt = '2016-01-26' limit 10; """ cmd = 'hive -e """'+sql.replace('"', "\'")+'"""' print cmd

    1.8K10

    Python进阶——SQL注入实例

    概述 SQL注入是一种十分常见的网络攻击行为,主要是通过非法参数执行 sql 语句,进行预期之外的操作。 原因:传入的参数改变SQL的语义,变成了其他命令,从而操作了数据库 解决方式:SQL语句使用拼接的方式,禁止使用非法参数 常用的注入方式(万能密码):'2 or 1=1'或' or 1 = 1 or ' user="root", password="mysql", database="python41 获取游标, 目的就是要执行sql语句 cursor = conn.cursor() # 准备sql, 之前在mysql客户端如何编写sql,在python程序里面还怎么编写 sql 执行sql语句 cursor.execute(sql) # 获取查询的结果, 返回的数据类型是一个元组 # row = cursor.fetchone() # print

    29.3K55

    Python进阶——防止SQL注入

    概述 预防SQL注入,要使用pymysql 参数化语句。pymysql 的 execute 支持参数化 sql,通过占位符 %s 配合参数就可以实现 sql 注入问题的避免。 这样参数化的方式,让 mysql 通过预处理的方式避免了 sql 注入的存在。 需要注意的是,不要因为参数是其他类型而换掉 %s,pymysql 的占位符并不是 python 的通用占位符。 user="root", password="mysql123456", database="python 获取游标, 目的就是要执行sql语句 cursor = conn.cursor() # 准备sql, 使用防止sql注入的sql语句, %s是sql语句的参数和字符串里面的%s不一样,不要加上引号 sql = "select * from students where name = %s;" print(sql) # 4.

    29.5K55

    python连接SQL Server数据

    配置连接MSSQL数据库,使用案例: DATABASES = { 'default': { 'ENGINE': 'sql_server.pyodbc', 'NAME : 'myserverip', 'PORT': '', 'OPTIONS': { 'driver': 'ODBC Driver 13 for SQL Server', #这里值得说明一点的是需要电脑下载ODBC Driver 13 for SQL Server。 'USER': 'user', 'PASSWORD': 'password, 'OPTIONS': { 'DRIVER': 'SQL 这个要先在操作系统上完成ODBC的连接创建,并连接成功,注意10.0这个地方,要和自己的ODBC版本一致 'OPTIONS': { 'driver':'SQL

    95620

    Python自动生成sql语句

    usr/bin/env python # coding=utf-8 def auto_insert_sql(objs, table=None, charset='UTF-8'): """ 自动生成insert SQL语句,如果obj为对象列表,则根据第一个对象生成SQL语句。 sql_prefix.append(', %s' % k if i > 0 else k) sql_suffix.append(', :%s' % k if i > 0 else ':% s' % k) sql_suffix.append(')') sql_prefix.extend(sql_suffix) sql = ''.join(sql_prefix) # -------------------------------------------------- return (sql, row_li) if is_batch else (sql,

    1K10

    python 批量执行sql文件

    需求: 要在服务器上指执行sql 为了不影响线上用户正常使用,且执行10000行暂停10秒。 然后用python 写了这样一个文件 文件存放位置: /root/sql/   文件名:2 3 4 5 6  ..... 这样做是为了省事 用 range(2,24) 其实可以写成读取目录文件:os.listdir("/root/sql/") ######## author shenym ########### ##### import os import time import math ##读取文件 for i in range(2,24):    ##拼接文件完整路径        filename="/root/sql

    87820

    Python 连接Sql Server数

    Python 想要和MSSql数据库进行交互,首先要下载名为"pymssql"的包,然后import该包即可。 地址:https://pypi.python.org/pypi/pymssql/2.1.0#downloads 百度云(3.4win32+64):http://pan.baidu.com/s/1eSyPO5c 下载后安装,系统会自动选择python所在文件夹,然后安装到python\Lis\site-packages文件夹中。 然后在python的IDLE中敲入,import pymssql。 如果没有报错,那就恭喜您安装成功。 安装成功后,我们使用如下语句和MSSql数据库交互。 [python] view plain copy import pymssql   conn=pymssql.connect(host='192.168.0.184',user='sa',password

    1.6K10

    Python如何防止sql注入

    豌豆贴心提醒,本文阅读时间10分钟 前言 web漏洞之首莫过于sql了,不管使用哪种语言进行web后端开发,只要使用了关系型数据库,可能都会遇到sql注入攻击问题。 那么在Python web开发的过程中sql注入是怎么出现的呢,又是怎么去解决这个问题的? 这里并不想讨论其他语言是如何避免sql注入的,网上关于PHP防注入的各种方法都有,Python的方法其实类似,这里我就举例来说说。 起因 漏洞产生的原因最常见的就是字符串拼接了。 sql注入测试。 使用Python的MySQLdb模块自带的方法 第一种方案其实在很多PHP的防注入方法里面都有,对特殊字符进行转义或者过滤。

    1.8K60

    函数计算 Python 连接 SQL

    python 连接数据库通常要安装第三方模块,连接 MS SQL Server 需要安装 pymssql 。 下面的例子是基于函数计算 runtime python3.6 的,对于 python2.7 也进行了测试,同样适用。 准备测试环境 首先使用 docker 在本机 Mac 电脑下运行一个 SQL Server 2017 服务,并初始化表结构,编辑一个 index.py 的测试文件,以验证数据库访问是否成功。 小结 这是一份来迟的函数计算使用 sql server 数据库的配置文档。当前版本的 pymssql 已经不再需要源码安装了。但是 pip 源码包安装的方法,对于其他类似的场景也是适用的。 view=sql-server-2017 https://cloudblogs.microsoft.com/sqlserver/2017/05/16/sql-server-command-line-tools-for-macos-released

    38120

    python利用pymssql连接SQL

    test_db] host = 127.0.0.1 port = 1433 tds version = 8.0 client charset = GBK 连接SQL print "Error decoding config file: %s" % str(err) sys.exit(1) def insert(self, sql __Connect() cur.execute(sql) cur.close() self.conn.commit() sql = "select * from test_table" rows = mssql.select(sql) #insert sql sql = "insert into test_table values('1','2','3')" mssql.insert(sql) if __name__ == "__main__": main() 注:host

    1.3K10

    python读取表头——对比sql字段

    大量文件需要写入数据库,时间跨度比较大,部分字段略作修改了 怎么对比各个文件的表头和sql字段是否一致 肯定不能一个一个打开去看,太麻烦了,而且上百个上千个文件呢 下面就是今天的小技巧,遍历访问文件

    14920

    Python中的SQL库:MySQL

    ---- 在上一篇《Python中的SQL库:SQLite》中,已经对数据库的基本操作有所概括,并且用SQLite做了演示。本文将重点介绍在Python程序中如何操作MySQL。 连接数据库 对于MySQL而言,与SQLite不同之处在于Python中没有内置的模块,如果要连接MySQL数据库,需要安装第三方的模块。 这方面的模块比较多,比如本文使用的mysql-connector-python只是其中之一。 首先,要安装这个模块。 语句,利用游标对象的execute方法执行SQL语句。 创建数据库表 前面已经看到,要在Python中执行各种SQL语句,需要通过cursor.execute()函数。下面就创建一个专门的函数,来完成各种SQL语句的操作。

    22410

    Python中的SQL库:SQLite

    本系列文章,将着重讨论Python语言为关系型数据库提供的SQL库,即用Python语言编写的程序,通过这些库(模块)连接DBMS,进而通过程序完成对数据库的各项操作。 Python标准库中已经提供了连接模块。 创建数据库表 对于SQLite数据库,要在Python中执行各种SQL语句,需要通过cursor.execute()函数。下面就创建一个专门的函数,来完成各种SQL语句的操作。 query则是SQL语句组成的字符串。 程序中操作SQLite数据库,跟直接使用SQL语句差不多,只不过这里是将所有SQL语句放到字符串里面,而后通过cursor.execute()函数执行。

    27110

    Python操作SQL 服务器

    每个人都使用SQLPythonSQL是数据库的实际标准,而Python是用于数据分析、机器学习和网页开发的全明星顶级语言。想象一下,两者如果结合在了一起? 实际上,两者要结合在一起非常容易设置。 可以快速利用Python的动态特性,控制和构建SQL查询。最好的部分是什么?设置完成后,无需执行任何操作。 这两种神奇的工具结合在一起后,自动化和效率都达到了新高度。 因此,一起看看从SQL中提取的这些数据。 4. 提取数据 要从SQL中提取数据到Python中,需要使用pandas。 因此,通过简单的步骤,首先了解了如何通过使用SQLPython的集成来快速建立更高效、自动化的工作流程。 这非常有用,不仅限于上述用例。 Python开辟了新路线,完成了以前仅使用SQL无法完成的操作。 很想听听你的意见、想法或用例! 感谢阅读

    37800

    python连接sql server并执

    python操作sql server,可以使用pymssql,成功安装pymssql后,按照如下的方法,可以连接数据库并执行查询操作: import pymssql #数据库服务器信息 server= " database="WeatherDataDB" conn=pymssql.connect(server,user,password,database) cur = conn.cursor() sql = "select * from Province" cur.execute(sql) rows = cur.fetchall() conn.close() for row in rows:

    33720

    Python:用 peewee 框架连接 SQL Server

    比如 SQL Server,需要安装 peewee-mssql。   但是安装 peewee-mssql 后却发现运行报错,而且是 import peewee-mssql 的时候就报错了。

    64330

    Python预编译语句防止SQL注入

    ================================== 今天也在找python的预编译,早上写的sql是拼接来构成的。于是找了2篇文章,还不错,分享一下大家学习。 (sql) 这种用法就是常见的拼接字符串导致sql注入漏洞的产生。 而是在构造带入的预编译语句的时候拼接了用户输入字符串,还未带入查询的预编译语句已经被注入了,之后带入正确的参数,最后被注入了 正确用法: execute() 函数本身有接受sql语句参数位的,可以通过python 自身的函数处理sql注入问题。 ) 2 cur.execute('select id, type ,name from xl_bugs where id = %s and type = %s', args ) 使用如此参数带入方式,python

    1.8K20

    相关产品

    • 云数据库 SQL Server

      云数据库 SQL Server

      腾讯云数据库 SQL Server 是业界最常用的商用数据库之一, 拥有微软正版授权,避免未授权使用软件的风险。支持复杂的 SQL 查询,性能优秀,对基于 Windows 平台 .NET 架构的应用程序具有完美的支持。同时具有即开即用、稳定可靠、安全运行、弹性扩缩等特。

    相关资讯

    热门标签

    活动推荐

    扫码关注腾讯云开发者

    领取腾讯云代金券