基本上,我试图更新Table1中的Column1_mbgl字段数据,这些数据均基于MS Access数据库。该脚本被执行而没有任何错误,但是在检查表时没有发生更新。我尝试了代码中所示的两个选项,但均未成功。第二个选项是直接从MS Access查询生成的SQL代码。有人可以建议我在代码中缺少什么吗?
#import pypyodbc
import pyodbc
# MS ACCESS DB CONNECTION
pyodbc.lowercase = False
conn = pyodbc.connect(
r"Driver={Microsoft Access Driver (*.mdb, *.accdb)};" +
r"Dbq=C:\temp\DB_access.accdb;")
# OPEN CURSOR AND EXECUTE SQL
cur = conn.cursor()
# Option 1 - no error and no update
cur.execute("UPDATE Table1 SET Column1_mbGL = Column2_mbGL-0.3 WHERE ((Column3_name='PZ01') AND (DateTime Between #6/14/2016 14:0:0# AND #6/16/2016 12:0:0#) AND (TYPE='LOG'))");
# Option 2 - no error and no update
#cur.execute("UPDATE Table1 SET Table1.Column1_mbGL = [Table1]![Column2_mbGL]-0.3 WHERE (((Table1.Column3_name)='PZ01') AND ((Table1.DateTime) …Run Code Online (Sandbox Code Playgroud) 我正在使用连接器/Python 将多行插入到 mysql 的临时表中。这些行都在一个列表列表中。我像这样执行插入:
cursor = connection.cursor();
batch = [[1, 'foo', 'bar'],[2, 'xyz', 'baz']]
cursor.executemany('INSERT INTO temp VALUES(?, ?, ?)', batch)
connection.commit()
Run Code Online (Sandbox Code Playgroud)
我注意到(当然还有更多的行)性能非常差。使用 SHOW PROCESSLIST,我注意到每个插入都是单独执行的。但是文档https://dev.mysql.com/doc/connector-python/en/connector-python-api-mysqlcursor-executemany.html说这应该优化为 1 个插入。这是怎么回事?
我正在尝试将以下列表传递给sql查询
x = ['1000000000164774783','1000000000253252111']
Run Code Online (Sandbox Code Playgroud)
我正在使用sqlalchemy和pyodbc连接到sql:
import pandas as pd
from pandas import Series,DataFrame
import pyodbc
import sqlalchemy
cnx=sqlalchemy.create_engine("mssql+pyodbc://Omnius:MainBrain1@172.31.163.135:1433/Basis?driver=/opt/microsoft/sqlncli/lib64/libsqlncli-11.0.so.1790.0")
Run Code Online (Sandbox Code Playgroud)
我尝试使用各种字符串格式函数在sql查询中使用。下面是其中之一
xx = ', '.join(x)
sql = "select * from Pretty_Txns where Send_Customer in (%s)" % xx
df = pd.read_sql(sql,cnx)
Run Code Online (Sandbox Code Playgroud)
他们似乎都将其转换为数字格式
(1000000000164774783, 1000000000253252111) instead of ('1000000000164774783','1000000000253252111')
Run Code Online (Sandbox Code Playgroud)
因此查询失败,因为SQL 中Send_Customer的数据类型为varchar(50)
ProgrammingError: (pyodbc.ProgrammingError) ('42000', '[42000] [Microsoft][SQL Server Native Client 11.0]
[SQL Server]Error converting data type varchar to numeric. (8114) (SQLExecDirectW)')
[SQL: 'select * from Pretty_Txns where Send_Customer in (1000000000164774783, 1000000000253252111)']
Run Code Online (Sandbox Code Playgroud) 嗨,我目前在Python 3中使用pyodbc,并且试图通过无需在不同计算机上进行手动更改而自动检测ODBC驱动程序的方法。原因是因为我的计算机具有ODBC驱动程序13,而另一位朋友的计算机具有ODBC驱动程序11,因此无论何时从侧面运行脚本,都必须先手动更改版本才能执行该过程。
谁能帮助解决这个问题?以下是我的示例代码。
谢谢
import os
import csv
import pyodbc
import datetime
from dateutil.relativedelta import relativedelta
conn = pyodbc.connect(
r'DRIVER={ODBC Driver 13 for SQL Server};'
r'SERVER=****;'
r'DATABASE=****;'
r'Trusted_Connection=yes;'
)
cursor = conn.cursor()
cursor.execute("Select * From Table1")
dData = cursor.fetchall()
Run Code Online (Sandbox Code Playgroud) 我目前正在使用python实现下面的简单查询,使用pyodbc在SQL服务器表中插入数据:
import pyodbc
table_name = 'my_table'
insert_values = [(1,2,3),(2,2,4),(3,4,5)]
cnxn = pyodbc.connect(...)
cursor = cnxn.cursor()
cursor.execute(
' '.join([
'insert into',
table_name,
'values',
','.join(
[str(i) for i in insert_values]
)
])
)
cursor.commit()
Run Code Online (Sandbox Code Playgroud)
只要没有重复键(假设第一列包含键),这应该可以工作.但是对于具有重复键的数据(表中已存在数据),将引发错误.如何使用pyodbc一次性在SQL服务器表中插入多行,以便只更新具有重复键的数据.
注意:针对单行数据提出了解决方案,但是,我想一次插入多行(避免循环)!
I have a SpringBoot app, where I use jdbcTemplate to insert a row to a mssql
int numOfRowsAffected = remoteJdbcTemplate.update("insert into dbo.[ELCOR Resource Time Registr_] "
+ "( [Entry No_], [Record ID], [Posting Date], [Resource No_], [Job No_], [Work Type], [Quantity], [Unit of Measure], [Description], [Company Name], [Created Date-Time], [Status] ) "
+ " VALUES (?,CONVERT(varbinary,?),?,?,?,?,?,?,?,?,?,?);",
ELCORResourceTimeRegistr.getEntryNo(),
ELCORResourceTimeRegistr.getEntryNo()),
ELCORResourceTimeRegistr.getPostingDate(),
ELCORResourceTimeRegistr.getResourceNo(),
jobNo,
ELCORResourceTimeRegistr.getWorkType(),
ELCORResourceTimeRegistr.getQuantity(),
ELCORResourceTimeRegistr.getUnitOfMeasure(),
ELCORResourceTimeRegistr.getDescription(),
ELCORResourceTimeRegistr.getCompanyName(),
ELCORResourceTimeRegistr.getCreatedDate(),
0);
Run Code Online (Sandbox Code Playgroud)
the value of ELCORResourceTimeRegistr.getEntryNo() is a String with the value 0x00173672
but …
我是python的新手,我需要连接到SQL Server。我在DB_Connect.py文件中运行以下命令。我从CMD行运行python DB_Connect.py,它在上给出错误import pyodbc。
然后,我运行命令,pip install pyodbc但显示错误消息:“需要Microsoft Visual C ++ 14.0”。我安装了“ Microsoft Visual C ++ 2015可再发行组件”来解决这个问题,因为我需要获得完整版本的许可证。我的理解是,这将起作用。我仍然收到此错误:
我需要安装完整版本的Visual C ++还是免费的选项?为什么此CMD无法与可再发行版本一起使用?我该如何走过这一步?
PC:Windows 7 Pro-64 Python版本:3.7.0
我正在尝试用mysql v8.0.11和驱动程序"mysql-connector-java-8.0.11"初始化hybris v6.7
我创建了方案"y"utf8 - utf8_bin并通过local.properties配置它
local.properties
db.url=jdbc:mysql://localhost/y?useConfigs=maxPerformance&characterEncoding=utf8
db.driver=com.mysql.jdbc.Driver
db.username=root
db.password=hell0w0rld!
db.tableprefix=
db.customsessionsql=SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
mysql.optional.tabledefs=CHARSET=utf8 COLLATE=utf8_bin
mysql.tabletype=InnoDB
Run Code Online (Sandbox Code Playgroud)
$ ant clean all initialize
[java] INFO [main] [Initialization] ###############################################################
[java] INFO [main] [Initialization] Initialize system ...
[java] INFO [main] [Initialization] ###############################################################
[java] INFO [main] [Initialization] Please wait. This step can take some minutes to complete.
[java] INFO [main] [Initialization] If you do not receive any feedback on this page in this time, consult the applicationserver logs for …Run Code Online (Sandbox Code Playgroud) 我正在编写一个VBA脚本,用于查找指定半径内的ZIP代码.我有一个Access数据库,在表中有多个记录.每个记录在表上都有一个名称,地址和邮政编码字段.上访问VBA代码提示输入邮政编码和搜索半径用户然后计算用户输入的邮政编码,每个记录的邮政编码之间的距离.计算每个距离后,只要记录落在半径输入字段内,记录就会显示在表格中.
我编写的代码有效但执行时间太长(2000年记录大约30秒).如何减少运行此VBA代码所需的时间?这是我写的代码:
Private Sub Command65_Click()
Dim StartTime As Double
Dim SecondsElapsed As Double
Dim i, j As Integer
Dim db As Database
Dim rs As Recordset
Dim ZIP, r As Double
Dim arr(33144, 3) As Double
Dim lat1, long1, lat2, long2, theta As Double
Dim Distance As Integer
Dim deg2rad, rad2deg As Double
Const PI As Double = 3.14159265359
'Dim Variables
StartTime = Timer
deg2rad = PI / 180
rad2deg = 180 / PI
r = Text1.Value
ZIP = Text2.Value …Run Code Online (Sandbox Code Playgroud) 请有人告诉我应该如何插入数据库但是python中的所有数据框?
我找到了这个,但不知道如何插入所有名为 test_data 的数据框,其中包含两个数字:ID、Employee_id。
我也不知道如何为 ID 插入下一个值(类似于 nextval)
谢谢
import pyodbc
conn = pyodbc.connect(r'Driver={Microsoft Access Driver (*.mdb)};DBQ=C:\Users\test_database.mdb;')
cursor = conn.cursor()
cursor.execute('''
INSERT INTO employee_table (ID, employee_id)
VALUES(?????????)
''')
conn.commit()
Run Code Online (Sandbox Code Playgroud) python ×7
pyodbc ×6
sql-server ×4
ms-access ×3
mysql ×2
python-3.x ×2
access-vba ×1
connector ×1
executemany ×1
hybris ×1
insert ×1
jdbc ×1
jdbctemplate ×1
mssql-jdbc ×1
odbc ×1
pandas ×1
performance ×1
spring-jdbc ×1
sqlalchemy ×1
vba ×1